R语言 ARIMA时间序列模型

1.数据介绍

  1. 本实验使用R的fEcofin包中的CPI.dat数据集。CPI是一个经季节调整的美国消费价格指数,此数据是月度的。
  2. 数据载入方法:
    1. 首先安装该数据所在包:install.packages("fEcofin", repos="http://R-Forge.R-project.org")
    2. 载入数据:originalData=CPI.dat

2.实验 ARMA时间序列数据分析

  1. 应用ARIMA(p,i,q)对1977/1到1987/12月的数据建模,确定ARIMA模型三个参数p,q,i的取值。
  2. 应用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=difsales,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

预测:

R语言 ARIMA时间序列模型_第1张图片

你可能感兴趣的:(R)