Klappmesser mit Zeitreihenmodellen

8

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:YtXtT×k

  1. AR (I) MA-Modell (jährliche Wachstumsraten haben wahrscheinlich keine "Einheit Roo", obwohl letztere entweder angenommen oder getestet wird)
    A(L)Yt=μ+B(L)εt
  2. lineares Regressionsmodell mit ARMA-Fehlern
    Yt=Xtβ+ηt,  A(L)ηt=B(L)εt
  3. verzögertes abhängiges Variablenmodell (autoregressives Modell mit exogenen Variablen)
    A(L)Yt=Xtβ+εt
  4. lineares Regressionsmodell
    Yt=Xtβ+εt

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).εtA(L)B(L)pqL

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.T40

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.hpredict()

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.k+p+q<t0<t1<Th+1YtXtpredict()Xt

Mit nur dem AR ( ) -Teil werden die Vorhersagen nacheinander Y t + 1 | durchgeführt t = A ( Lp . 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 , jYt+1|t=A^(L)Ytqθn,jθ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.θjθn,jθj

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.q

Fragen

  1. Funktioniert auto.arima()korrekt, wenn fehlende Werte in der Stichprobe vorhanden sind? [Bereits von Rob beantwortet.]
  2. (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.)p>0q>0

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?

modpredict.ArimaYt+1|tA^(L)(YtXtβ^)+Xtβ^+B^(L)ε^tKalmanForecast()θjθn,jθjθn,j

Dmitrij Celov
quelle
itsmrηtεtarimaY.t- -X.tβ^ArimaArima
μ=0itsmrArima

Antworten:

4

q>0

So beantworten Sie Ihre spezifischen Fragen:

  1. auto.arima()Aufrufe, arima()die eine Zustandsraumdarstellung zur Berechnung der Wahrscheinlichkeit verwenden. Fehlende Werte werden natürlich in einem Zustandsraumformat behandelt. Ja, sie werden korrekt behandelt.

  2. Fehlende historische Werte werden von nicht geschätzt arima() . Wenn Sie sie vorhersagen möchten (dh nur frühere Daten verwenden), passen Sie einfach ein Modell an den Anfang der fehlenden Sequenz an und prognostizieren Sie daraus. Wenn Sie sie schätzen möchten (unter Verwendung von Daten vorher und nachher), müssten Sie einen Kalman-Glätter verwenden, der auf dem äquivalenten Zustandsraummodell basiert. Ein alternativer Fudge, der fast die gleichen Ergebnisse liefert, besteht darin, die Prognosen unter Verwendung von Daten bis zu den letzten nicht fehlenden Daten zu mitteln, wobei die Backcasts Daten bis zu den ersten nicht fehlenden Daten nach der fehlenden Sequenz verwenden.

Rob Hyndman
quelle