Zeichnen vorhergesagter Werte in ARIMA-Zeitreihen in R.

10

Es gibt wahrscheinlich mehr als ein schwerwiegendes Missverständnis in dieser Frage, aber es ist nicht dazu gedacht, die Berechnungen richtig zu machen, sondern das Lernen von Zeitreihen mit einem gewissen Fokus zu motivieren.

Beim Versuch, die Anwendung von Zeitreihen zu verstehen, scheint es, als würde eine Vorhersage der Daten die Vorhersage zukünftiger Werte unplausibel machen. Die gtempZeitreihen aus dem astsaPaket sehen beispielsweise folgendermaßen aus:

Geben Sie hier die Bildbeschreibung ein

Der Aufwärtstrend der letzten Jahrzehnte muss bei der Darstellung der prognostizierten zukünftigen Werte berücksichtigt werden.

Um die Zeitreihenschwankungen zu bewerten, müssen die Daten jedoch in eine stationäre Zeitreihe umgewandelt werden. Wenn ich es als ARIMA Prozess - Modell mit differenzier (Ich denke , dies ist wegen der Mitte durchgeführt 1in order = c(-, 1, -)) , wie in:

require(tseries); require(astsa)
fit = arima(gtemp, order = c(4, 1, 1))

und dann versuche zukünftige Werte ( Jahre) vorherzusagen , ich vermisse die Aufwärtstrendkomponente:50

pred = predict(fit, n.ahead = 50)
ts.plot(gtemp, pred$pred, lty = c(1,3), col=c(5,2))

Geben Sie hier die Bildbeschreibung ein

Wie kann ich den Aufwärtstrend im vorhergesagten Teil des Diagramms wiederherstellen, ohne unbedingt die tatsächliche Optimierung der einzelnen ARIMA-Parameter zu berühren ?

Ich vermute, dass irgendwo ein OLS "versteckt" ist, was diese Nichtstationarität erklären würde?

Ich bin auf das Konzept gestoßen drift, das in die Arima()Funktion des forecastPakets integriert werden kann und eine plausible Handlung ergibt :

par(mfrow = c(1,2))
fit1 = Arima(gtemp, order = c(4,1,1), 
             include.drift = T)
future = forecast(fit1, h = 50)
plot(future)
fit2 = Arima(gtemp, order = c(4,1,1), 
             include.drift = F)
future2 = forecast(fit2, h = 50)
plot(future2)

Geben Sie hier die Bildbeschreibung ein

das ist undurchsichtiger in Bezug auf seinen Rechenprozess. Ich möchte verstehen, wie der Trend in die Plotberechnungen einbezogen wird. Ist eines der Probleme , dass es keine driftin arima()(Kleinbuchstaben)?


Im Vergleich dazu wird unter Verwendung des Datensatzes AirPassengersdie vorhergesagte Anzahl von Passagieren jenseits des Endpunkts des Datensatzes aufgezeichnet, wobei dieser Aufwärtstrend berücksichtigt wird:

Geben Sie hier die Bildbeschreibung ein

Der Code lautet:

fit = arima(log(AirPassengers), c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
pred <- predict(fit, n.ahead = 10*12)
ts.plot(AirPassengers,exp(pred$pred), log = "y", lty = c(1,3))

eine Handlung rendern, die Sinn macht.

Antoni Parellada
quelle
1
Ich würde sagen, wenn Sie glauben, dass Sie eine Serie haben, in der sich der Trend im Laufe der Zeit geändert hat, sind ARIMA-Modelle möglicherweise nicht der beste Weg, um sich ihrer Vorhersage zu nähern. Ohne Fachwissen (was zu besseren Modellen führen könnte) würde ich gerne Zustandsraummodelle betrachten. insbesondere Varianten des Basic Structural Model für so etwas. Viele Diskussionen über Zustandsraummodelle können schwer zu verfolgen sein, aber Andrew Harveys Bücher und Papiere sind gut lesbar (das Buch Forecasting, Structural Time Series Models und der Kalman Filter sind zum Beispiel ziemlich gut). ... ctd
Glen_b -Rate State Monica
ctd ... Es gibt einige andere Autoren, die einigermaßen gut abschneiden, aber selbst die besseren machen es etwas komplizierter, als es für Anfänger wirklich sein muss.
Glen_b -Reinstate Monica
Vielen Dank, @Glen_b. Nur zu versuchen, ein Gespür für Zeitreihen zu bekommen, und wie in vielen mathematischen Themen ist das Fehlen einer motivierenden Präambel ein Killer. Alle Zeitreihen, die uns wirklich interessieren, scheinen nach oben oder unten zu tendieren - Populationen, GOP, Aktienmarkt, globale Temperaturen. Und ich verstehe, dass Sie die Trends loswerden möchten (möglicherweise für eine Sekunde), um zyklische und saisonale Muster zu erkennen. Das Zurückspleißen der Ergebnisse mit dem übergreifenden Trend, Vorhersagen zu treffen, wird jedoch entweder impliziert oder nicht als Ziel behandelt.
Antoni Parellada
Rob Hyndmans Kommentare hier sind relevant. Ich kann zurückkommen und das ein wenig erweitern.
Glen_b -Reinstate Monica
Rob J. Hyndmans Blogbeitrag "Konstanten und ARIMA-Modelle in R" ist wahrscheinlich alles, was Sie wissen müssen. Ich wäre gespannt auf Ihre Meinung, wenn Sie den Blog-Beitrag lesen.
Richard Hardy

Antworten:

1

Aus diesem Grund sollten Sie ARIMA oder andere nicht stationäre Daten nicht ausführen.

Die Antwort auf eine Frage, warum die ARIMA-Prognose flach wird, ist nach Betrachtung der ARIMA-Gleichung und einer der Annahmen ziemlich offensichtlich. Dies ist eine vereinfachte Erklärung. Behandeln Sie sie nicht als mathematischen Beweis.

Betrachten wir das AR (1) -Modell, aber das gilt für jedes ARIMA (p, d, q).
Die Gleichung von AR (1) lautet: und die Annahme über ist, dass . Mit einem solchen β ist jeder nächste Punkt näher an 0 als der vorherige, bis und .

yt=βyt1+α+ϵ
β|β|1βyt1=0yt=const=α

Wie gehe ich in diesem Fall mit solchen Daten um? Sie müssen es durch Differenzierung ( ) oder Berechnung der Änderung ( ) stationär machen . Sie modellieren Unterschiede, keine Daten selbst. Die Unterschiede werden mit der Zeit konstant, das ist Ihr Trend.new.data=ytyt1new.data=yt/yt11

 require(tseries)
 require(forecast)
 require(astsa)
 dif<-diff(gtemp)
 fit = auto.arima(dif)
 pred = predict(fit, n.ahead = 50)
 ts.plot(dif, pred$pred, lty = c(1,3), col=c(5,2))
 gtemp_pred<-gtemp[length(gtemp)]
 for(i in 1:length(pred$pred)){
   gtemp_pred[i+1]<-gtemp_pred[i]+pred$pred[i]
 }
 plot(c(gtemp,gtemp_pred),type="l")

Geben Sie hier die Bildbeschreibung ein

mbt
quelle
Vielen Dank. Kurz gesagt, wäre die Steigung des endgültigen Diagramms? α
Antoni Parellada
Ich denke, Sie haben es verwirrt, weil die Steigung oft als . Wenn Sie jedoch fragen würden, in welcher Beziehung dieses einer Steigung steht, ist die Antwort nicht trivial. Kurz gesagt, wenn Sie die Differenzierung gewählt hätten, wäre eine Tangente einer Steigung. Wenn Sie die prozentuale Änderung gewählt hätten, gäbe es keine Steigung, da der Trend nicht linear ist. ααα
MBT
OKAY. Ich muss ein bisschen mit Ihrem Code spielen, um zu sehen, was er in Bezug auf die ts-Gleichung zu veranschaulichen versucht. Ich habe nicht mit ts gearbeitet, und es ist schon eine Weile her, seit ich die Frage gestellt habe.
Antoni Parellada
Nachdem ich ein bisschen mit dem Code gespielt habe, sehe ich, was los ist. Können Sie die Anpassungskoeffizienten, die sich AR1 = 0.257; MA = - 0.7854in der ARIMA-Modellgleichung befinden , einbeziehen, um den Erzeugungsprozess der projizierten oder vorhergesagten geneigten Schwanzlinie am Ende Ihres Diagramms vollständig zu erfassen?
Antoni Parellada
Sicher. In meiner Antwort habe ich nur die AR (1) -Gleichung angegeben. Die Gleichung für den gesamten ARMA (p, q) -Prozess lautet wobei die erste Summe AR (p) ist Teil und zweite Summe ist MA (q) -Prozess. Wir haben hier ARMA (1,1), daher ist es weniger komplex: wobei , , . y t=βyt-1+γεt-1+α+εtβ=0.257γ=-0,7854α=0,0064
y^t=ipβiyti+jqγjϵtj+α+ϵt
y^t=βyt1+γϵt1+α+ϵt
β=0.257γ=0.7854α=0.0064
MBT