Ich verstehe, wir sollten ARIMA zur Modellierung einer instationären Zeitreihe verwenden. Nach allem, was ich lese, sollte ARMA nur für stationäre Zeitreihen verwendet werden.
Ich versuche zu verstehen, was in der Praxis passiert, wenn ein Modell falsch klassifiziert wird und d = 0
für eine Zeitreihe angenommen wird, die nicht stationär ist. Beispielsweise:
controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)
Steuerdaten sehen folgendermaßen aus:
[1] 0.0000000 0.1240838 -1.4544087 -3.1943094 -5.6205257
[6] -8.5636126 -10.1573548 -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515 -9.3330560
[36] -7.5676563 -6.3691600 -6.8471371 -7.5982880 -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890
Angenommen, ich wüsste nicht, dass es sich um Daten handelt ARIMA(1,1,1)
, könnte ich einen Blick darauf werfen pacf(controlData)
.
Dann benutze ich Dickey-Fuller, um zu sehen, ob die Daten nicht stationär sind:
require('tseries')
adf.test(controlData)
# Augmented Dickey-Fuller Test
#
# data: controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary
adf.test(controlData, k = 1)
# Augmented Dickey-Fuller Test
#
#data: controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary
Ich könnte also annehmen, dass es sich bei den Daten um ARIMA (2,0, *) handelt. auto.arima(controlData)
Versuchen Sie dann, eine optimale Anpassung zu erzielen?
require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData
# ARIMA(2,0,1) with non-zero mean
#
# Coefficients:
# ar1 ar2 ma1 intercept
# 1.4985 -0.5637 0.6427 -11.8690
# s.e. 0.1508 0.1546 0.1912 3.2647
#
# sigma^2 estimated as 0.8936: log likelihood=-64.01
# AIC=138.02 AICc=139.56 BIC=147.05
Obwohl die vergangenen und zukünftigen Daten ARIMA (1,1,1) sind, könnte ich versucht sein, sie als ARIMA (2,0,1) zu klassifizieren. tsdata(auto.arima(controlData))
sieht auch gut aus.
Hier ist, was ein informierter Modellierer finden würde:
informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData
# ARIMA(1,1,1)
#
# Coefficients:
# ar1 ma1
# 0.4936 0.6859
# s.e. 0.1564 0.1764
#
# sigma^2 estimated as 0.9571: log likelihood=-62.22
# AIC=130.44 AICc=131.04 BIC=135.79
1) Warum sind diese Informationskriterien besser als das von ausgewählte Modell auto.arima(controlData)
?
Jetzt vergleiche ich nur grafisch die realen Daten und die 2 Modelle:
plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")
2) Als Anwalt des Teufels, welche Konsequenzen hätte ich, wenn ich ein ARIMA (2, 0, 1) als Modell verwenden würde? Was sind die Risiken dieses Fehlers?
3) Ich bin hauptsächlich besorgt über mögliche Auswirkungen auf Vorwärtsvorhersagen für mehrere Zeiträume. Ich nehme an, sie wären weniger genau? Ich suche nur einen Beweis.
4) Würden Sie eine alternative Methode für die Modellauswahl vorschlagen? Gibt es irgendwelche Probleme mit meiner Argumentation als "uninformierter" Modeler?
Ich bin wirklich neugierig, was die anderen Konsequenzen dieser Art von Fehlklassifizierung sind. Ich habe nach Quellen gesucht und konnte einfach nichts finden. Die gesamte Literatur, die ich finden konnte, berührt nur dieses Thema. Stattdessen sollte angegeben werden, dass die Daten vor der Ausführung von ARMA stationär sein sollten. Wenn sie nicht stationär sind, müssen sie d-mal differenziert werden.
Vielen Dank!
quelle
Antworten:
Mein Eindruck ist, dass diese Frage keine eindeutige, allgemein gültige Antwort hat. Ich werde daher nur den einfachsten und etwas informellen Fall untersuchen.
Angenommen, der wahre ist mit einer üblichen Mittelwert-Null iid-Weißrauschkomponente, . Das oben Gesagte impliziert auch das
Wir spezifizieren ein Modell, nennen es ModellA
und wir erhalten eine Schätzung für die postulierte (lassen Sie uns die Schätzmethode nur dann besprechen, wenn Bedarf besteht).β^ β
So wird eine Schritte-Voraussage seink
und seine MSE wird sein
(Der mittlere Term des Quadrats verschwindet ebenso wie die Kreuzprodukte zukünftiger Fehler).
Angenommen, wir haben unsere Daten differenziert und ein ModellB
und erhielt eine Schätzung . Unser differenziertes Modell kann geschrieben werdenγ^
Wir werden also die Ebene des Prozesses vorhersagen
was in Wirklichkeit angesichts der wahren DGP sein wird
Es ist einfach , dass, für das Modell zu überprüfen , dann ,B
Wir gehen davon aus, dass wir bei jedem "getesteten und ausprobierten" Schätzverfahren da sein wahrer Wert , es sei denn, wir haben zu wenige Daten oder sind in einem sehr "schlechten" Zustand . Wir können also sagen, dass wir in den meisten Fällen haben werden|γ^|<1 0
und so
während ich der Einfachheit halber wiederhole
Damit das differenzierte Modell in Bezug auf die Vorhersage-MSE eine bessere Leistung erbringt, möchten wir
Wie beim Schätzer in Modell gilt für den Schätzer in Modell die gleiche Höflichkeit : Wir gehen vernünftigerweise davon aus, dass "nahe an der Einheit" sein wird.B A β^
Es ist offensichtlich, dass wenn es so kommt, dass , die Menge auf der rechten Seite der Ungleichung tendenziell ansteigt, ohne gebunden zu sein, da , die Anzahl der vorausgesagten Schritte, zunimmt. Andererseits kann die Menge der gewünschten Ungleichung auf der linken Seite mit zunehmendem zunehmen, sie hat jedoch eine obere Schranke . In diesem Szenario erwarten wir, dass das differenzierte Modell in Bezug auf die Vorhersage der MSE besser als Modell .β^>1 k k B A
Nehmen wir jedoch an, es sei vorteilhafter, Fall zu modellieren , bei dem . Dann hat auch die rechtsseitige Menge eine Schranke. Dann müssen wir als prüfen, obA β^<1 k→∞
(das ist eine Annehmlichkeit - in Wirklichkeit werden beide Größen bereits für kleine Werte von nahe an ihrem Suprema sein ).k→∞ k
Beachten Sie, dass der Ausdruck "ziemlich nahe" bei , sodass Modell dieser Hinsicht einen Vorteil hat.(γ^1−γ^)2 0 B
Wir können den verbleibenden erwarteten Wert nicht trennen, da der Schätzer nicht unabhängig von . Aber wir können die Ungleichung in verwandelnγ^ uT
Nun wird erwartet, dass die Kovarianz auf der linken Seite klein ist, da der Schätzer von allen Fehlern abhängt . Auf der anderen Seite der Ungleichung stammt aus einem stationären Datensatz, und daher wird erwartet, dass der erwartete Wert der obigen Funktion viel geringer ist als die Größe der Stichprobe (da mehr über diese Funktion reicht) in ). T γ (0,1)γ^ T γ^ (0,1)
Ohne eine bestimmte Schätzmethode zu erörtern, konnte meines Erachtens informell gezeigt werden, dass mit dem differenzierten Modell eine bessere Leistung in Bezug auf die Vorhersage von MSE zu erwarten ist.
quelle
Das ist eine gute Frage.
Wie mir klar ist, haben Sie gerade über pacf nachgedacht, aber das ist nicht genug. ACF und PACF sind beide erforderlich, um das beste Modell auszuwählen.
Auf der anderen Seite sind stationäre Tests schwach und empfindlich und erfordern eine große Anzahl zu testender Verzögerungen.
Außerdem ist es bevorzugt, Zeitreihen stationär zu machen, bevor ein Modell angewendet wird. Grob gesagt, betrachten ARIMA-Modelle nur einen speziellen Fall, in dem sie nicht stationär sind (vorzugsweise im Trend).
Bei Ihren Fragen bin ich mir nicht sicher, ob auto.arima funktioniert, aber ich bin mir sicher, dass die Anzahl der Datenpunkte in Ihrem Beispiel gering ist. Das Simulieren eines Modells unter Verwendung einer großen Anzahl von Datenpunkten würde Ihre Fragen gut beantworten. Außerdem rate ich Ihnen, sowohl ACF-Zeitreihen als auch PACF zu berücksichtigen. Bei der Modellauswahl gilt als Faustregel das einfachste Modell (beachten Sie, dass das einfachste Modell nach dem Festlegen der Zeitreihen stationär ist).
Ich verweise Sie auf diese Referenz. Dieses Buch beantwortet nicht alle Ihre Fragen, sondern gibt Ihnen einige Hinweise.
----- komplementärer Abschnitt ------- @nsw unter Berücksichtigung eines Trends in Ihren Daten. Wenn Sie ein stationäres Modell in Betracht ziehen, führt dies zu einer Aufwärts- / Abwärtsvorhersage. Tatsächlich sind ARMA-Modelle jedoch darauf ausgelegt, flache Daten vorherzusagen. Ich habe Ihren Code geändert, um diesen Unterschied widerzuspiegeln:
erfordern ('Prognose')
erfordern ('tseries')
controlData <- arima.sim (list (order = c (1,1,1), ar = 0,5, ma = 0,5), n = 1000 )
acf (controlData)
ts.plot (controlData)
naiveFit <- arima (controlData, order = c (2,0,1))
trueFit <- arima (controlData, order = c (1,1,1))
PrnaiveFit <-forecast.Arima (naiveFit, 10)
PrtrueFit <- forecast.Arima (trueFit, 10)
matplot (cbind (PrnaiveFit $ mean, PrtrueFit $ mean), type = 'b', col = c ('red', 'green'), ylab = c ('predict ion'), pch = c ('n', 't'))
quelle