2010-04-21 140 views
11

我想向自己解釋將ARIMA模型應用於時間序列數據集的預測結果。數據來自M1比賽,系列爲MNB65。我試圖將數據擬合到ARIMA(1,0,0)模型並獲得預測。我使用R.下面是一些輸出片段:解釋來自ARIMA模型的預測

> 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)如何解釋,雖然該數據集顯示了一個明顯的下降趨勢,從這個模型的預測趨勢向上。對於使用auto.arima(預測包)和ARIMA(1,0,1)模型的ARIMA(2,0,0),這也是最適合數據的ARIMA。 (2)ARIMA(1,0,0)模型的截距值爲12260.298。截距不應滿足方程:C =平均值*(1 - 總和(AR係數)),在這種情況下,該值應爲715.52。我必須在這裏錯過一些基本的東西。

(3)這顯然是一個非平穩的意思。爲什麼AR(2)模型仍然被auto.arima選爲最佳模型?可以有一個直觀的解釋嗎?

謝謝。

+1

我已經投票結束這個,因爲它不是一個編程問題。 – 2010-04-21 16:44:16

回答

21
  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()中指定所需的差異數。

這裏有兩個測試的結果,爲您的數據:

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)。

+1

感謝Hyndman教授的詳細評論。 – 2010-05-03 15:18:11

+0

Hyndman教授,有沒有辦法確定一個系列是I(2)還是需要兩次差分才能使它靜止?如果系列差異一次或兩次,進一步分析的結果會有所不同。你的帖子建議使用KPSS,但有沒有其他的選擇?謝謝。 – Anusha 2014-09-24 19:32:23