Arimaモデルからの予測を説明します
-
30-09-2019 - |
質問
ARIMAモデルを時系列データセットに適用したことによる予測の結果を自分自身に説明しようとしています。データはM1競争からのもので、シリーズは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)モデル用。
(2)Arima(1,0,0)モデルの切片値は12260.298です。インターセプトが方程式を満たすべきではありません。 C = mean * (1 - sum(AR coeffs))
, 、その場合、値はそうあるべきです 715.52
. 。私はここで基本的な何かを見逃しているに違いありません。
(3)これは明らかに非定常平均を持つシリーズです。なぜAR(2)モデルが最適なモデルとして選択されているのですか auto.arima
?直感的な説明はありますか?
ありがとう。
解決
モデルが静止しているため、アリマ(P、0、Q)モデルはトレンドを許可しません。本当にトレンドを含めたい場合は、ドリフト用語でArima(P、1、Q)、またはArima(P、2、Q)を使用してください。 Auto.arima()が0の違いを示唆しているという事実は、通常、明確な傾向がないことを示しています。
arima()のヘルプファイルは、インターセプトが実際に平均であることを示しています。つまり、AR(1)モデルは
(Y_t-c) = ϕ(Y_{t-1} - c) + e_t
それよりもY_t = c + ϕY_{t-1} + e_t
ご想像のとおり。auto.arima()
ユニットルートテストを使用して、必要な差の数を判断します。したがって、ユニットルートテストの結果を確認して、何が起こっているのかを確認してください。必要な違いの数をいつでも指定できますauto.arima()
ユニットルートテストが賢明なモデルにつながっていないと思われる場合。
データの2つのテストの結果は次のとおりです。
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)を示唆しています。