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.

War es hilfreich?

Lösung

  1. 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.

  2. 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 statt Y_t = c + ϕY_{t-1} + e_t wie man erwarten könnte.

  3. 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 in auto.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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top