CSDN ARIMA R语言_R语言时间序列分析(十二):ARIMA

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书,《R语言数据高效处理指南》(黄天元)【简介_书评_在线阅读】 - 当当图书)。知乎专栏:R语言数据挖掘。邮箱:[email protected].欢迎合作交流。

ARIMA,全称Autoregressive Integrated Moving Average model,差分整合移动平均自回归模型,或称整合移动平均自回归模型,时间序列分析经典预测方法之一,涉及平稳、差分、自回归、滑动平均等多个基本概念,感兴趣请移步Chapter 8 ARIMA models | Forecasting: Principles and Practice。这里仅对预测流程的实现进行讲解,这也并不是一个简单的过程,包括:

1、可视化观察看是否有异常值;

2、如果需要的话,对数据进行转化,让时间序列平稳;

3、如果仍然不平稳,使用差分法(一阶差分、二阶差分...)让其平稳;

4、差分后,用ACF/PACF图对其进行定阶;

5、选出一系列的模型,然后使用AICc等标准对其效果进行评估,选出最优模型;

6、对模型进行残差分析,查看残差是否为白噪音;

7、如果是白噪音,可以结束建模过程,利用模型进行预测。

在8.7 ARIMA modelling in R | Forecasting: Principles and Practice中提供了一个流程图供参考:

CSDN ARIMA R语言_R语言时间序列分析(十二):ARIMA_第1张图片

千言万语汇成一句话,使用auto.arima。尽管自动化工具总是有一定的风险,但是其实人为定阶不仅费时费力,也容易引入人为误差。下面给出一个实际的例子:

library(fpp2)

cement <- window(qcement, start=1988)
train <- window(cement, end=c(2007,4))
(fit.arima <- auto.arima(train))

#> Series: train 
#> ARIMA(1,0,1)(2,1,1)[4] with drift 
#> 
#> Coefficients:
#>         ar1     ma1   sar1    sar2    sma1  drift
#>       0.889  -0.237  0.081  -0.235  -0.898  0.010
#> s.e.  0.084   0.133  0.157   0.139   0.178  0.003
#> 
#> sigma^2 estimated as 0.0115:  log likelihood=61.47
#> AIC=-109   AICc=-107.3   BIC=-92.63

checkresiduals(fit.arima)

#> 
#>  Ljung-Box test
#> 
#> data:  Residuals from ARIMA(1,0,1)(2,1,1)[4] with drift
#> Q* = 3.3, df = 3, p-value = 0.3
#> 
#> Model df: 6.   Total lags used: 9

CSDN ARIMA R语言_R语言时间序列分析(十二):ARIMA_第2张图片
# 进行预测

a1 <- fit.arima %>% forecast(h = 4*(2013-2007)+1) %>%
  accuracy(qcement)
a1[,c("RMSE","MAE","MAPE","MASE")]

#>                RMSE     MAE  MAPE   MASE
#> Training set 0.1001 0.07989 4.372 0.5458
#> Test set     0.1996 0.16882 7.719 1.1534

无论是拟合、残差诊断、模型预测还是效果评估,基本都是一步到位。ARIMA和ETS都是时间序列分析中的有效工具,在实践中经常将两者进行比较。

这里基本把ARIMA的黑箱使用模式介绍了一下,但是要活的具体的模型参数,还需要对原理进行一定的了解(参考Chapter 8 ARIMA models | Forecasting: Principles and Practice中的各个公式并了解参数的含义)。非常感谢forecast包的作者,把auto.arima带给了我们,让很多需要一步一步人工验证选择的东西实现了自动化,相信这会是未来应用统计学的一大趋势。

你可能感兴趣的:(CSDN,ARIMA,R语言)