入门时间序列ARIMA模型基本应用(附R代码)

浏览: 5832

最近看了时间序列,本文想简单通俗的介绍一下ARIMA算法的应用,每一步的意义,用R代码实现

选择R中的时间序列数据skirts.dat。以此数据为例,举一个入门例子。

1.首先把数据导入,并设置开始时间,查看走势图

skirts <- scan("http://robjhyndman.com/tsdldata/roberts/skirts.dat",skip=5)
skirtsts<- ts(skirts,start = c(1866))
plot.ts(skirtsts)

Clipboard Image.png

从上图看出走势并不平稳,需要转化成平稳时间序列,因为从数据角度需要保证整个时间周期内变化是有规律的

2.对数据进行平稳变化,差分变化

skirtstsdiff<-diff(skirtsts,differences=1)
plot.ts(skirtstsdiff)
skirtstsdiff2<-diff(skirtsts,differences=2)
plot.ts(skirtstsdiff2)

Clipboard Image.png

差分变化可以理解成将数据走势图转化成斜率走势图,即使原图整体变化趋势都是向上,他们每个时间的变化程度(斜率)是有规律的(先多,后少,再多,再少等。

上图转化后,变化趋势稳定,第二步确定数据集可转化成平稳序列,即可进行时间序列预测。

3.进行arima方法预测,R语言中具有一个函数auto.arima,可直接进行时间序列预测

library(forecast);
skirtsarima<-auto.arima(skirtsts,trace=T)

ARIMA(2,2,2)                    : Inf

 ARIMA(0,2,0)                    : 393.6216

 ARIMA(1,2,0)                    : 391.6212

 ARIMA(0,2,1)                    : 392.0664

 ARIMA(2,2,0)                    : 393.9273

 ARIMA(1,2,1)                    : 393.9276

 ARIMA(2,2,1)                    : Inf

 Best model: ARIMA(1,2,0)    

Series: skirtsts 

ARIMA(1,2,0)                    

Coefficients:

          ar1

      -0.2997

s.e.   0.1424

sigma^2 estimated as 397.8:  log likelihood=-193.66

AIC=391.33   AICc=391.62   BIC=394.9

这个步骤选择的结果最终是以AIC为指标,AIC通俗的理解就是实际值和预测值之间的差值的一个变换,越小越好。

4. 预测后5年

skirtsarimaforecast<-forecast.Arima(skirtsarima,h=5,level=c(99.5))
skirtsarimaforecast

 Point Forecast  Lo 99.5  Hi 99.5

1912       534.8045 478.8188 590.7902

1913       539.8663 429.4297 650.3028

1914       544.5513 366.6838 722.4188

1915       549.3492 294.7542 803.9442

1916       554.1133 214.1185 894.1081

结果即呈现,验证方法很多。此处就不一一举例。

推荐 2
本文由 张聪 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册