1.数据介绍
- 本实验使用R的fEcofin包中的CPI.dat数据集。CPI是一个经季节调整的美国消费价格指数,此数据是月度的。
- 数据载入方法:
- 首先安装该数据所在包:install.packages("fEcofin", repos="http://R-Forge.R-project.org")
- 载入数据:originalData=CPI.dat
2.实验 ARMA时间序列数据分析
- 应用ARIMA(p,i,q)对1977/1到1987/12月的数据建模,确定ARIMA模型三个参数p,q,i的取值。
- 应用ARIMA(p,i,q)对1977/1到1987/12月的数据建模,且预测之后5个月的CPI值,并计算出相应误差
#rm(list=ls())
#setwd("D:/AUniversity/GameDesign/R/Project/ARIMA")
#library(forecast)
#library(fUnitRoots)
#library(fEcofin)
#绘制时间-CPI坐标图
data=CPI.dat
cpi=ts(data$CPI)
plot.ts(cpi,xlab="时间",ylab="cpi")
#单位根检验
unitrootTest(cpi)
#自相关图
acf(cpi)
#一阶差分
difsales1=diff(cpi)
plot.ts(difsales1,xlab="时间",ylab="CPI残差")
#自相关图
acf(difsales1)
#单位根检验
unitrootTest(difsales1)
#二阶差分
difsales2=diff(difsales1)
plot.ts(difsales2,xlab="时间",ylab="CPI残差")
#自相关图
acf(difsales2)
#单位根检验
unitrootTest(difsales2)
# #三阶差分
# difsales3=diff(difsales2)
# plot.ts(difsales3,xlab="时间",ylab="CPI残差")
# #自相关图
# acf(difsales3)
# #单位根检验
# unitrootTest(difsales3)
#白噪声检验
Box.test(difsales2,type="Ljung-Box")
pacf(difsales2)
#BIC图
library(TSA)
res=armasubsets(y=difsales1,nar=5,nma=5,y.name='test',ar.method='ols')
plot(res)
#p=1,q=3,i=2
#ARIMA(1,2,3)模型
# arimaModel=arima(cpi,order=c(1,2,3))
# arimaModel
library(stats)
arimaModel=stats::arima(cpi,order=c(1,2,3))
forecastdata=forecast(arimaModel,h=5,level=c(99.5))
forecastdata
得P=1,Q=3,I=2
预测: