解释ARIMA模型的预测

时间:2010-04-21 15:54:11

标签: r time-series forecasting

我试图向自己解释将ARIMA模型应用于时间序列数据集的预测结果。数据来自M1-Competition,系列是MNB65。我试图将数据拟合到ARIMA(1,0,0)模型并获得预测。我正在使用R.以下是一些输出片段:

> arima(x, order = c(1,0,0))
Series: x 
ARIMA(1,0,0) with non-zero mean 
Call: arima(x = x, order = c(1, 0, 0)) 
Coefficients:
         ar1  intercept
      0.9421  12260.298
s.e.  0.0474    202.717

> predict(arima(x, order = c(1,0,0)), n.ahead=12)
$pred
Time Series:
Start = 53 
End = 64 
Frequency = 1 
[1] 11757.39 11786.50 11813.92 11839.75 11864.09 11887.02 11908.62 11928.97 11948.15 11966.21 11983.23 11999.27

我有几个问题:

(1)我如何解释虽然数据集显示出明显的下降趋势,但该模型的预测趋势向上。这也适用于ARIMA(2,0,0),这是使用auto.arima(预测包)和ARIMA(1,0,1)模型的数据的最佳ARIMA。

(2)ARIMA(1,0,0)模型的截距值为12260.298。截距不应满足等式:C = mean *(1 - sum(AR coeffs)),在这种情况下,该值应为715.52。我必须在这里遗漏一些基本的东西。

(3)这显然是一个非平稳的系列。为什么AR(2)模型仍被auto.arima选为最佳模型?可以有一个直观的解释吗?

感谢。

1 个答案:

答案 0 :(得分:23)

  1. 没有ARIMA(p,0,q)模型将允许趋势,因为模型是静止的。如果您真的想要包含趋势,请使用带有漂移项的ARIMA(p,1,q)或ARIMA(p,2,q)。 auto.arima()建议0差异的事实通常表明没有明显的趋势。

  2. arima()的帮助文件显示拦截实际上是平均值。也就是说,AR(1)模型是(Y_t-c)= phi *(Y_ {t-1} - c)+ e_t而不是Y_t = c + phi * Y_ {t-1} + e_t,正如您所料

  3. auto.arima()使用单位根测试来确定所需的差异数量。因此,请检查单位根测试的结果,看看发生了什么。如果您认为单位根测试未导致合理的模型,则始终可以在auto.arima()中指定所需的差异数。

  4. 以下是两项数据测试的结果:

    R> adf.test(x)
    
            Augmented Dickey-Fuller Test
    
    data:  x 
    Dickey-Fuller = -1.031, Lag order = 3, p-value = 0.9249
    alternative hypothesis: stationary 
    
    R> kpss.test(x)
    
            KPSS Test for Level Stationarity
    
    data:  x 
    KPSS Level = 0.3491, Truncation lag parameter = 1, p-value = 0.09909
    

    因此,ADF表示非常不稳定(在这种情况下为零假设),而KPSS并不完全拒绝平稳性(该测试的零假设)。 auto.arima()默认使用后者。如果您想进行第一次测试,可以使用auto.arima(x,test =“adf”)。在这种情况下,它建议ARIMA(0,2,1)模型确实有一个趋势。