#R#通过ARIMA自动拟合与预测

来源:互联网 发布:数据挖掘 韩家炜 ppt 编辑:程序博客网 时间:2024/06/11 16:56

转载自:  http://blog.macro2.org/2011-09/r%E7%AE%80%E5%8D%95%E7%9A%84arima%E6%A8%A1%E5%9E%8B%E8%87%AA%E5%8A%A8%E6%9C%80%E4%BC%98%E6%8B%9F%E5%90%88%E4%B8%8E%E9%A2%84%E6%B5%8B.html

昨天用R折腾了一个简单的时间序列数据Arima自动拟合与预测。过程不复杂,但由于用得不多,为了防止忘记,撰文记录。

打开R,安装一个叫做"Forecast"的包。每次开启R后,使用之前用 
library('forecast') 
加载该包。

这里我用传说中的Airline Model数据。载入数据,转换成TS格式 
airdata<-read.table('airline.dat') 
airts<-ts(airdata,start=1949,frequency=12)

然后用forecast包中的auto.arima自动拟合Arima模型。 
arima1<-auto.arima(airts,trace=T) 
显示的结果如下: 
ARIMA(2,0,2)(1,1,1)[12] with drift : 974.1468 
ARIMA(0,0,0)(0,1,0)[12] with drift : 1077.823 
ARIMA(1,0,0)(1,1,0)[12] with drift : 974.92 
ARIMA(0,0,1)(0,1,1)[12] with drift : 1022.198 
ARIMA(2,0,2)(0,1,1)[12] with drift : 967.1033 
ARIMA(2,0,2)(0,1,0)[12] with drift : 966.755 
ARIMA(1,0,2)(0,1,0)[12] with drift : 964.3004 
ARIMA(1,0,1)(0,1,0)[12] with drift : 963.9208 
ARIMA(1,0,1)(0,1,0)[12] : 971.225 
ARIMA(1,0,1)(1,1,0)[12] with drift : 972.4003 
ARIMA(1,0,1)(0,1,1)[12] with drift : 963.9781 
ARIMA(1,0,1)(1,1,1)[12] with drift : 971.7862 
ARIMA(0,0,1)(0,1,0)[12] with drift : 1022.291 
ARIMA(2,0,1)(0,1,0)[12] with drift : 965.183 
ARIMA(1,0,0)(0,1,0)[12] with drift : 966.9728

Best model: ARIMA(1,0,1)(0,1,0)[12] with drift

结果是一个AR(1),MA(1)和季节差分一次的Arima模型。Arima模型自动拟合的关键就是定阶,以前用的办法是EACF(extended (sample) autocorrelation function)来定阶,不过现在一般用AIC,AICc,BIC等统计量来定阶。例如上面的974.1468 等就是该模型的AIC 

然后可以预测了。 
airfore<-forecast(arima1,h=30,fan=T) 
预测了30个月,另外计算了置信区间50到99的预测值。 
plot(airfore) 
最后绘图。如果需要获取其中的预测数据,可以用: airefore$mean 获取。 
air.jpg

有图为证,预测效果还不错。

0 0
原创粉丝点击