Verzögerungsreihenfolge für den Granger-Kausaltest


10

Angenommen, ich erwäge mehrere unabhängige Variablen für eine mögliche Aufnahme in ein von mir entwickeltes ARIMAX-Modell. Bevor ich verschiedene Variablen anpasse, möchte ich Variablen, die eine umgekehrte Kausalität aufweisen, mithilfe eines Granger-Tests herausfiltern (ich verwende die granger.testFunktion aus dem MSBVARPaket in R, obwohl ich glaube, dass andere Implementierungen ähnlich funktionieren). Wie bestimme ich, wie viele Verzögerungen getestet werden sollen?

Die R-Funktion lautet : granger.test(y, p), wobei ysich ein Datenrahmen oder eine Matrix befindet und pdie Verzögerungen sind.

Die Nullhypothese ist, dass die vergangenen Werte von X nicht bei der Vorhersage des Wertes von Y helfen .pXY

Gibt es einen Grund, hier keine sehr hohe Verzögerung zu wählen (außer dem Verlust von Beobachtungen)?

Beachten Sie, dass ich bereits alle Zeitreihen in meinem Datenrahmen basierend auf der Integrationsreihenfolge meiner abhängigen Zeitreihen differenziert habe . (ZB wurde meine abhängige Zeitreihe einmal stationär differenziert. Daher habe ich auch alle "unabhängigen" Zeitreihen einmal differenziert.)


1
Beachten Sie, dass Ihre Strategie der Differenzierung, um Stationarität zu erreichen, von einer fehlenden Integration abhängt. Weitere Informationen finden Sie im ausgezeichneten Blog-Beitrag "Testen auf Granger-Kausalität" von Dave Giles.
Richard Hardy

Antworten:


11

XY

Die Granger-Kausalität muss immer im Kontext eines Modells getestet werden. Im speziellen Fall der granger.testFunktion in R hat das Modell p Vergangenheitswerte jeder der beiden Variablen im bivariaten Test. Das verwendete Modell ist also:

yi,t=α+l=1pβlyi,tl+γlxi,tl+ϵi,t

ppp

xygranger.testnxmy

Nur ein zusätzliches Wort - da der Granger-Test modellabhängig ist, kann die Verzerrung ausgelassener Variablen ein Problem für die Granger-Kausalität sein. Möglicherweise möchten Sie alle Variablen in Ihr Modell aufnehmen und dann die Granger-Kausalität verwenden, um Blöcke davon auszuschließen, anstatt die granger.testFunktion zu verwenden, die nur paarweise Tests durchführt.


Lassen Sie mich sehen, ob ich das richtig verstehe ... Wenn ich also überprüfe, ob y Änderungen in x1 verursacht, führe ich mehrere Anpassungen durch: x1 ~ L (y, 1), x1 ~ L (y, 1) + L. (y, 2), x1 ~ L (y, 1) + L (y, 2) + L (y, 3) ... Dann ist derjenige mit dem besten IC die Verzögerung, die ich für den Granger-Test wähle?
Ch-Pub

1
Ja, obwohl auch verzögerte Werte von x enthalten sein sollten.
Jayk

Ich bin mir nicht sicher, ob ich diesen Teil verstehe. Du meinst so etwas? x1 ~ L (y, 1) + L (x1,1) gegen x1 ~ L (y, 1) + L (x1,1) + L (y, 2) + L (x1,2) gegen ...
ch-Pub

2
Ja. Im Allgemeinen müssen Sie dies nicht auf diese Weise tun, da die Verzögerungslängen für x und y nicht gleich sein müssen. Siehe: en.wikipedia.org/wiki/Granger_causality#Mathematical_statement Der R-Befehl granger.test verwendet jedoch p vergangene Werte von x UND y. Mit dieser dem Test zugrunde liegenden Spezifikation müssen Sie versuchen, IC mit n vergangenen Werten von x UND y gegenüber IC mit n + 1 vergangenen Werten von x UND y zu verwenden.
Jayk

Kein Problem! Ich habe gerade meine ursprüngliche Antwort bearbeitet, um sie etwas weniger undurchsichtig zu machen.
Jayk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.