Einführung
Ich möchte die jährlichen Wachstumsraten für eine Reihe von makroökonomischen Indikatoren prognostizieren (mit ). Eine der Aufgaben besteht darin, die Prognoseleistung konkurrierender Zeitreihenmodelle mit und ohne exogene Variablen ( X t , eine T × k- Matrix) zu testen . Die Liste der Konkurrenzmodelle umfasst:
- AR (I) MA-Modell (jährliche Wachstumsraten haben wahrscheinlich keine "Einheit Roo", obwohl letztere entweder angenommen oder getestet wird)
- lineares Regressionsmodell mit ARMA-Fehlern
- verzögertes abhängiges Variablenmodell (autoregressives Modell mit exogenen Variablen)
- lineares Regressionsmodell
Wo angenommen wird , ein starkes weißes Rauschen, Mittelwert von Null konstanter Varianz sein iid Prozess; A ( L ) und B ( L ) sind autoregressive (von Ordnung p ) und gleitende (von Ordnung q ) Polynome mit L - einem Rückverschiebungsoperator (Verzögerung).
Beachten Sie, dass das primäre und einzige Ziel die Vorhersage der Leistung ist. Daher sind alle "guten" Eigenschaften von Parameterschätzungen von untergeordneter Bedeutung. Alles, was ich brauche, ist, auf den sparsamsten, robustesten Prognostiker für Startbedingungen zu testen. Die Entscheidung wird mit einer der accuracy()
Optionen getroffen, aber zuerst muss ich das Material für den Vergleich erhalten.
Die Modelle 1. und 2. werden auto.arima()
mit der Standardschätzmethode "CSS-ML"
geschätzt. Die Modelle 3. und 4. werden durch gewöhnliche kleinste Quadrate ( lm()
) geschätzt . ist ungefähr 40 Viertel.
Bisher versuchte Ansätze
Um die Jack-Knifed-Residuen herzustellen, wurde der erste mit "Rollen" bezeichnete Ansatz implementiert. Ausgehend von feasibly großer Teilprobe von Zeitreihendaten werden Parameter abgeschätzt und eine voraus Prognose wird durch die getan Funktion (EDIT: es ist der gleiche Vorschlag wie im ersten Teil Robs Antwort auf die zweite Frage). Danach wird ein Punkt hinzugefügt und die Schätz- / Vorhersageschritte werden wiederholt.predict()
Ein Schwachpunkt solcher Experimente ist, dass die Anzahl der Zeitabschnitte (Stichprobengröße), die zur Schätzung der Parameter verwendet werden, unterschiedlich ist. Während ich die Robustheit gegenüber den Startbedingungen testen möchte, halte ich die Stichprobengröße für die Schätzung fest.
Vor diesem Hintergrund habe ich versucht, die verschiedenen nachfolgenden Werte (EDIT: für das Intervall ) in Y t als fehlende Werte (NA) festzulegen. In den Modellen 2.-4. Dies impliziert auch das Löschen der entsprechenden nachfolgenden Zeilen in der Datenmatrix X t . Die Vorhersage für 3. und 4. ist unkompliziert (dasselbe gilt für ausgelassene X t -Datenzeilen). Alle meine Bedenken beziehen sich auf die Modelle 1. und 2.predict()
Mit nur dem AR ( ) -Teil werden die Vorhersagen nacheinander Y t + 1 | durchgeführt t = A ( L . Bei Vorhandensein von MA ( q ) konnte man die geschätzten Parameter jedoch nicht direkt (?) Verwenden. Aus dem Kapitel 3.3 von Brockwell und Davis "Einführung in Zeitreihen und Prognosen" folgt, dass man einen Innovationsalgorithmus benötigt, um θ n , j aus dem spezifischen Gleichungssystemrekursiv zu schätzen, das geschätzte autoregressive und gleitende Durchschnittsparameter umfasst. EDIT: diese θ n , jParameter werden verwendet, um die ARMA-Vorhersage zu treffen, nicht die ursprünglich geschätzten Parameter ; j . Jedoch ist es in den gleichen Kapiteln bemerkt , daß θ n , j asymptotisch θ j , wenn der Prozeß invertierbar ist. Es ist nicht ersichtlich, dass 30-40 Punkte ausreichen, um das asymptotische Ergebnis zu verwenden, selbst wenn es invertierbar ist.
Anmerkungen: Ich möchte auf Null beschränken, da ich dies bei echten Prognosen außerhalb der Stichprobe nicht tue. BEARBEITEN: auch nicht, dass es kein Problem der Wertimputation fehlt, sondern ein Vorhersageexperiment, dass die Trajektorie nicht zwei Teilstichproben überbrücken soll, indem die fehlenden Werte unterstellt werden.
Fragen
- Funktioniert
auto.arima()
korrekt, wenn fehlende Werte in der Stichprobe vorhanden sind? [Bereits von Rob beantwortet.] - (Der eigentlich entscheidende Teil dieses Beitrags) Wie kann man diese fehlenden Punkte aus dem ARMA-Modell korrekt vorhersagen (NICHT unterstellen), wenn sowohl als auch q > 0 sind ? (Ich hoffe, es gibt die Möglichkeiten, die bereits in der R-Sprache implementiert sind, aber mir fehlt einfach etwas.)
BEARBEITEN: Da die Parameter für ARMA-Teile korrekt geschätzt werden, kann ich das Arima-Objekt legal neu anordnen, um die geschätzten Parameter und Daten nur für die erste Teilstichprobe einzuschließen, und dann eine Vorhersagefunktion verwenden?
mod
predict.Arima
KalmanForecast()
itsmr
arima
Arima
Arima