Ich möchte die prognostizierten und zurückgesendeten (dh die vorhergesagten vergangenen Werte) eines Zeitreihendatensatzes zu einer Zeitreihe kombinieren, indem ich den mittleren quadratischen Vorhersagefehler minimiere.
Angenommen, ich habe Zeitreihen von 2001 bis 2010 mit einer Lücke für das Jahr 2007. Ich konnte 2007 anhand der Daten von 2001 bis 2007 (rote Linie - ) und mithilfe der Daten von 2008 bis 2009 (hellblau) zurücksenden line - nenne es ).Y b
Ich mag die Datenpunkte kombinieren und in einen kalkulatorischen Datenpunkt Y_i für jeden Monat. Idealerweise möchte ich das Gewicht so erhalten, dass es den mittleren quadratischen Vorhersagefehler (MSPE) von . Wenn dies nicht möglich ist, wie würde ich nur den Durchschnitt zwischen den Datenpunkten der beiden Zeitreihen ermitteln?Y b w Y i
Als schnelles Beispiel:
tt_f <- ts(1:12, start = 2007, freq = 12)
tt_b <- ts(10:21, start=2007, freq=12)
tt_f
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 1 2 3 4 5 6 7 8 9 10 11 12
tt_b
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 10 11 12 13 14 15 16 17 18 19 20 21
Ich würde gerne bekommen (nur die Mittelung anzeigen ... Idealerweise die MSPE minimieren)
tt_i
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5
quelle
predict
Funktion des Prognosepakets. Ich denke jedoch, dass ich das HoltWinters-Prognosemodell verwenden werde, um Vorhersagen und Backcasts zu treffen. Ich habe Zeitreihen mit kleinen <50 Zählungen und habe Poisson-Regressionsprognosen ausprobiert - aber aus irgendeinem Grund zu sehr schwachen Vorhersagen.NA
Werte? Es scheint, dass es irreführend sein könnte, eine Lernperiode MSPE zu machen, da die Unterperioden durch lineare Tendenzen gut beschrieben werden, aber in der versäumten Periode tritt irgendwo ein Abfall auf, und es könnte tatsächlich jeder Punkt sein. Da die Prognosen im Trend kollinear sind, führt ihr Durchschnitt zu zwei Strukturbrüchen anstelle von scheinbar einem.Antworten:
Angenommen, Sie haben die quadratischen Vorhersagefehler für die Prognose und den Backcast einzeln, würde ich Folgendes empfehlen: Sei w ein Vektor der Länge 12, sei m der Monat, an dem Sie interessiert sind.
Jetzt ist w das Gewicht für die Vorhersage und 1-w ist das Gewicht für den Backcast.
quelle
s/w/m/
Ihr Ziel ist es, eine Glättung der Zeitreihen mit festem Intervall (FI) durchzuführen . Der geglättete Wert der Beobachtung zum Zeitpunkt ist definiert als eine bedingte Erwartung wobei die Notation für die Vektor der Beobachtungen von Zeit bis Zeit . Oben wird angenommen, dass die Lücke das Intervall ist, das von der Zeit bis , und ist die Länge der gesamten Reihe. Die Zeit ist in der Lücke und die Erwartung könnte geschrieben werdent
Der geglättete Wert hat nicht die einfache Form, die Sie erraten. Für eine stationäre Gaußsche Zeitreihe mit bekannter Kovarianzstruktur kann das geschätzte für in der Lücke durch Lösen eines linearen Systems gefunden werden. tYˆt t
Wenn das Zeitreihenmodell in Form eines Zustandsraums (SS) gebracht werden kann, ist die FI-Glättung eine Standardoperation, die auf Kalman-Filterung basiert, und kann beispielsweise unter Verwendung verfügbarer R-Funktionen durchgeführt werden. Sie müssen lediglich angeben, dass die Werte in der Lücke fehlen. Der Glättungsalgorithmus schätzt den verborgenen Zustand der alle relevanten Informationen über für in der Lücke enthält. ARIMA-Modelle können in SS-Form gebracht werden.Y t tαt Yt t
Interessanterweise kann die FI-Glättung als eine Kombination von zwei Filtern geschrieben werden: einer vorwärts und einer rückwärts, was zu einer Formel der erwarteten Art führt, jedoch für die Schätzung des verborgenen Zustands (Prognose und Backcast). aber nicht für die Beobachtung . Dies ist als Rauch-Tung-Striebel-Filterung bekannt .Y tαt Yt
Zumindest in den multiplikativen Versionen basieren Ad-hoc-Prognoseverfahren wie Holt-Winters auf stochastischen Modellen ohne einfache FI-Algorithmen, da sie nicht in SS-Form gebracht werden können. Die Glättungsformel kann wahrscheinlich mithilfe des SS-Modells angenähert werden, es ist jedoch viel einfacher, strukturelle Zeitreihenmodelle mit Protokolltransformationen zu verwenden. Die Funktionen 'KalmanSmooth', 'tsSmooth' und 'StructTS' des R- Statistikpakets können diese Aufgabe übernehmen. Sie sollten sich die Bücher von Harvey oder von Durbin und Koopman ansehen, die auf den R-Hilfeseiten zitiert sind. Der Glättungsalgorithmus kann eine bedingte Varianz für das geschätzte bereitstellenYt und kann verwendet werden, um Glättungsintervalle aufzubauen, die normalerweise in der Mitte des Spaltes größer sind. Beachten Sie jedoch, dass die Schätzung von Strukturmodellen schwierig sein kann.
quelle
Ich finde Ihren vorgeschlagenen Ansatz, die Mittel der Vor- und Rückwürfe zu nutzen, interessant.
Eine Sache, auf die hingewiesen werden sollte, ist, dass in jedem System mit chaotischer Struktur die Vorhersagen über kürzere Zeiträume wahrscheinlich genauer sind. Dies ist nicht bei allen Systemen der Fall. Beispielsweise könnte ein gedämpftes Pendel durch eine Funktion mit der falschen Periode modelliert werden. In diesem Fall sind wahrscheinlich alle mittelfristigen Prognosen falsch, während die langfristigen Prognosen alle falsch sein werden sehr genau, da das System gegen Null konvergiert. Aus der Grafik in der Frage geht jedoch hervor, dass dies eine vernünftige Annahme sein könnte.
Dies bedeutet, dass wir uns möglicherweise besser auf die Prognosedaten für den früheren Teil des fehlenden Zeitraums und mehr auf die Backcast-Daten für den letzten Teil verlassen sollten. Der einfachste Weg, dies zu tun, wäre die Verwendung eines linear abnehmenden Gewichts für die Prognose und das Gegenteil für die Rückbesetzung:
Dies gibt ein wenig Gewicht des Rückschlags auf das erste Element. Sie können auch n-1 ohne die Indizes am Ende verwenden, wenn Sie nur den Prognosewert für den ersten interpolierten Punkt verwenden möchten.
Ich habe Ihre Daten nicht, also versuchen wir es mit dem AirPassenger-Datensatz in R. Ich werde nur einen Zeitraum von zwei Jahren in der Nähe des Zentrums entfernen:
Und da ist deine Interpolation.
Natürlich ist es nicht perfekt. Ich denke, das liegt daran, dass sich die Muster im früheren Teil der Daten von denen im letzten Teil unterscheiden (der Jul-Aug-Peak ist in früheren Jahren nicht so stark). Aber wie Sie auf dem Bild sehen können, ist es eindeutig besser als nur die Vorhersage oder das Backcasting allein. Ich würde mir vorstellen, dass Ihre Daten möglicherweise etwas weniger verlässliche Ergebnisse liefern, da es keine so starken saisonalen Schwankungen gibt.
Meine Vermutung wäre, dass Sie dies auch einschließlich der Konfidenzintervalle versuchen könnten, aber ich bin mir nicht sicher, ob es so einfach ist, dies zu tun.
quelle