So führen sie einen granger-kausalitätstest in python durch
Der Granger-Kausalitätstest wird verwendet, um zu bestimmen, ob eine Zeitreihe für die Vorhersage einer anderen nützlich ist oder nicht.
Dieser Test verwendet die folgenden Null- und Alternativhypothesen:
Nullhypothese (H 0 ): Die Zeitreihe x verursacht nach Granger nicht die Zeitreihe y
Alternativhypothese ( HA ): Zeitreihe x Zeitreihe von Granger verursacht y
Der Begriff „Granger-Ursachen“ bedeutet, dass die Kenntnis des Werts der Zeitreihe x mit einer gewissen Verzögerung nützlich ist, um den Wert der Zeitreihe y zu einem späteren Zeitpunkt vorherzusagen.
Dieser Test erzeugt eine F-Test-Statistik mit einem entsprechenden p-Wert . Wenn der p-Wert unter einem bestimmten Signifikanzniveau liegt (d. h. α = 0,05), können wir die Nullhypothese ablehnen und daraus schließen, dass wir über ausreichende Beweise verfügen, um zu behaupten, dass die Zeitreihe x Granger die Zeitreihe y verursacht.
Wir können die Funktion grangercausalitytests() aus dem statsmodels-Paket verwenden, um einen Granger-Kausalitätstest in Python durchzuführen:
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' column1 ', ' column2 ']], maxlag=[ 3 ])
Beachten Sie, dass maxlag die Anzahl der Verzögerungen angibt, die in der ersten Zeitreihe verwendet werden sollen.
Das folgende Schritt-für-Schritt-Beispiel zeigt, wie Sie diese Funktion in der Praxis nutzen.
Schritt 1: Daten laden
Für dieses Beispiel verwenden wir einen Datensatz, der Werte für die Anzahl der hergestellten Eier sowie die Anzahl der Hühner in den Vereinigten Staaten von 1930 bis 1983 enthält:
import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/Statorials/Miscellaneous/main/chicken_egg.txt" #read in dataset as pandas DataFrame df = pd. read_csv (url, sep=" ") #view first five rows of DataFrame df. head () year chicken egg 0 1930 468491 3581 1 1931 449743 3532 2 1932 436815 3327 3 1933 444523 3255 4 1934 433937 3156
Verwandte Themen: So lesen Sie CSV-Dateien mit Pandas
Schritt 2: Führen Sie den Granger-Kausalitätstest durch
Als nächstes werden wir die Funktion grangercausalitytests () verwenden, um einen Granger-Kausalitätstest durchzuführen, um zu sehen, ob die Anzahl der hergestellten Eier eine Vorhersage für die zukünftige Anzahl von Hühnern ist. Wir werden den Test mit drei Offsets durchführen:
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' chicken ', ' egg ']], maxlag=[ 3 ]) Granger Causality number of lags (no zero) 3 ssr based F test: F=5.4050, p=0.0030, df_denom=44, df_num=3 ssr based chi2 test: chi2=18.7946, p=0.0003, df=3 likelihood ratio test: chi2=16.0003, p=0.0011, df=3 parameter F test: F=5.4050, p=0.0030, df_denom=44, df_num=3
Die F-Test-Statistik beträgt 5,405 und der entsprechende p-Wert beträgt 0,0030 .
Da der p-Wert kleiner als 0,05 ist, können wir die Nullhypothese des Tests ablehnen und schlussfolgern, dass die Kenntnis der Anzahl der Eier nützlich ist, um die zukünftige Anzahl der Hühner vorherzusagen.
Schritt 3: Führen Sie den Granger-Kausalitätstest in umgekehrter Reihenfolge durch
Obwohl wir die Nullhypothese des Tests abgelehnt haben, ist es tatsächlich möglich, dass ein Fall umgekehrter Kausalität eintreten könnte. Mit anderen Worten: Es ist möglich, dass sich die Anzahl der Eier durch die Anzahl der Hühner verändert.
Um diese Möglichkeit auszuschließen, müssen wir den Granger-Kausalitätstest in umgekehrter Reihenfolge durchführen und dabei Hühner als Prädiktorvariable und Eier als Antwortvariable verwenden:
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' egg ', ' chicken ']], maxlag=[ 3 ]) Granger Causality number of lags (no zero) 3 ssr based F test: F=0.5916, p=0.6238, df_denom=44, df_num=3 ssr based chi2 test: chi2=2.0572, p=0.5606, df=3 likelihood ratio test: chi2=2.0168, p=0.5689, df=3 parameter F test: F=0.5916, p=0.6238, df_denom=44, df_num=3
Die F-Test-Statistik beträgt 0,5916 und der entsprechende p-Wert beträgt 0,6238 .
Da der p-Wert nicht kleiner als 0,05 ist, können wir die Nullhypothese nicht ablehnen. Mit anderen Worten: Die Anzahl der Hühner sagt nichts über die zukünftige Anzahl an Eiern aus.
Daraus können wir schließen, dass die Kenntnis der Anzahl der Eier hilfreich ist, um die zukünftige Anzahl der Hühner vorherzusagen.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben mit Zeitreihen in Python ausführen:
So erstellen Sie ein Zeitreihendiagramm in Seaborn
So erstellen Sie ein Zeitreihendiagramm in Matplotlib