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!