时间序列分析——ARIMA模型预测(R)

时间:2021-07-23 14:40:03
  1. 读取数据( scan() read.csv() 等函数, row.names 参数可以用来指定索引列)

  2. 转换成时间序列( ts() 函数,注意 frequency 参数取值设置:
    http://m.blog.csdn.net/blog/u014032673/41984147

  3. 观察检验时间序列是否平滑,对不平滑的时间序列要进行差分( diff() 函数),差分的阶数= arima(p,d,q) 中d参数的值

  4. acf()和 pacf()两个函数分别查看时间序列的自相关图和偏自相关图,并得出相应的q,p值

  5. 模型初步选择,可以用函数

    AIC(arima(objts,order=c(p,d,q),method="ML"))
    查看模型的AIC值初步进行判断

  6. ARIMA模型拟合,调用 arima(objts,order=c(p,d,q)) 来拟合数据,可用 tsdiag(a1) 对模型进行检验。也可用 arimamodel<auto.arima(objts,trace=T) 来自动进行拟合。

  7. 预测,调用 forecast.Arima(objarima,h=,level=c(99.5)) 获得要预测的未来某“长度”内的数据。可以用 plot.forecast(objforecast) 查看预测的序列。

  8. 残差检验,对预测的残差进行检验,如果残差是一个白噪声序列,说明残差中已经不再含有有用的信息,模型已经不需要优化了。残差检验可调用
    Box.test(objforecast$residuals,lag=20,type="LjungBox")

    *统计量为17.4,*度为20,并且P值是0.6(置信度只有40%)这样的值不足以拒绝“预测误差在1-20阶是非零自相关,证明预测误差在1-20阶是非零自相关的。*
    Ps: p值大,说明为纯随机序列。p值小,非纯随机序列,置信水平(1-p).

    或者用
    plotForecastErrors(objforecast$residuals) 看预测的残差是否满足一个正态分布,这个函数使用前要先定义:
    时间序列分析——ARIMA模型预测(R)

    或者用
    acf(objforecast$residuals,lag.max=20) 查看残差的自相关图。

以前没有接触过时序分析,为免以后忘记,先粗浅的大概总结了下流程吧,最近因为做题才接触到这一块儿,统计方面很多内因都还不太懂,慢慢理解后再行扩充吧。