Die Erklärung der Prognosen von einem ARIMA-Modell
-
30-09-2019 - |
Frage
Ich versuche, mir das Prognoseergebnis Anlegen eines ARIMA-Modells zu einer Zeitreihendatensatzes zu erklären. Die Daten werden von dem M1-Wettbewerb, die Serie ist MNB65. Ich versuche, die Daten in ein ARIMA (1,0,0) Modell entwickelt worden und die Prognosen zu bekommen. Ich verwende R. Hier einige Ausgangs Schnipsel sind:
> 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
Ich habe ein paar Fragen:
(1) Wie erkläre ich, dass, obwohl die Datenmenge zeigt einen deutlichen Abwärtstrend, die Prognose von diesem Modell Aufwärtstrends? Dies geschieht auch für ARIMA (2,0,0), die die beste ARIMA fit für die Daten ist mit auto.arima
(Prognose-Paket) und für ein ARIMA (1,0,1) -Modell.
(2) Der Schnittwert für die ARIMA (1,0,0) -Modell ist 12.260,298. Sollte nicht der Schnittpunkt die Gleichung: C = mean * (1 - sum(AR coeffs))
, wobei in diesem Fall sollte der Wert 715.52
sein. Ich muss hier etwas Grundsätzliches fehlen.
(3) Dies ist eindeutig eine Reihe mit nicht-stationärem Mittelwert. Warum ist ein AR (2) Modell nach wie vor als das beste Modell von auto.arima
ausgewählt? Könnte es eine intuitive Erklärung sein?
Danke.
Lösung
-
Nein ARIMA (p, 0, q) Modell wird für einen Trend ermöglichen, weil das Modell steht. Wenn Sie wirklich ein Trend aufnehmen möchten, verwenden Sie ARIMA (p, 1, q) mit einer Driftterm oder ARIMA (p, 2, q). Die Tatsache, dass auto.arima () schlägt 0 Unterschiede in der Regel dort zeigen würde, ist kein klarer Trend.
-
Die Hilfedatei für arima () zeigt, dass der Schnittpunkt tatsächlich ist der Mittelwert. Das heißt, die AR (1) -Modell ist
(Y_t-c) = ϕ(Y_{t-1} - c) + e_t
stattY_t = c + ϕY_{t-1} + e_t
wie man erwarten könnte. -
auto.arima()
verwendet eine Einheit Wurzelkriterium die Anzahl der Unterschiede erforderlich, um zu bestimmen. So überprüfen Sie die Ergebnisse der Einheitswurzeltest, um zu sehen, was los ist. Sie können jederzeit die erforderliche Anzahl von Unterschieden inauto.arima()
angeben, wenn Sie die Einheitswurzeltests glauben an ein vernünftiges Modell nicht führen.
Hier sind die Ergebnisse von zwei Tests für Ihre Daten:
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
So sagt die ADF stark nicht-stationär (die Nullhypothese in diesem Fall), während die KPSS nicht ganz Stationarität abzulehnen (die Nullhypothese für diesen Test). auto.arima()
verwendet die letztere standardmäßig. Sie könnten auto.arima(x,test="adf")
verwenden, wenn Sie den ersten Test wollen. In diesem Fall schlägt er das Modell ARIMA (0,2,1), die eine Tendenz hat.