Der Granger-Kausalitätstest wird verwendet, um festzustellen, 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 Granger-verursacht keineZeitreihe y

Alternativhypothese (H A ): Zeitreihe x Granger-verursacht Zeitreihe y

Der Begriff „Granger-verursacht bedeutet, dass die Kenntnis des Werts der Zeitreihe x bei einer bestimmten Verzögerung nützlich ist, um den Wert der Zeitreihe y zu einem späteren Zeitpunkt vorherzusagen.

Dieser Test erzeugt eine F-Teststatistik mit einem entsprechenden p-Wert. Wenn der p-Wert kleiner als ein bestimmtes Signifikanzniveau ist (dh α = 0,05), können wir die Nullhypothese zurückweisen und schlussfolgern, dass wir genügend Beweise dafür haben, dass die Zeitreihe x Granger die Zeitreihe y verursacht.

Wir können die Funktion grangercausalitytests() aus dem Paket statsmodels verwenden, um einen Granger-Kausalitätstest in Python durchzuführen:

from statsmodels.tsa.stattools import grangercausalitytests

#Granger-Kausalitätstest durchführen
grangercausalitytests(df[['column1', 'column2']], maxlag=[3])

Beachten Sie, dass maxlag die Anzahl der in der ersten Zeitreihe zu verwendenden Verzögerungen angibt.

Das folgende Schritt-für-Schritt-Beispiel zeigt, wie Sie diese Funktion in der Praxis verwenden können.

Schritt 1: Laden Sie die Daten

Für dieses Beispiel verwenden wir einen Datensatz, der Werte für die Anzahl der Eier enthält, die zusammen mit der Anzahl der Hühner in den USA von 1930 bis 1983 hergestellt wurden:

import pandas as pd

#URL definieren, wo sich der Datensatz befindet
url = "https://raw.githubusercontent.com/Statology/Miscellaneous/main/chicken_egg.txt"

#Dataset als Pandas DataFrame einlesen
df = pd.read_csv(url, sep="  ")

#erste fünf Zeilen von DataFrame anzeigen
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

Verwandt: So lesen Sie CSV-Dateien mit Pandas

Schritt 2: Führen Sie den Granger-Kausalitätstest durch

Als Nächstes verwenden wir die Funktion grangercausalitytests(), um einen Granger-Kausalitätstest durchzuführen, um zu sehen, ob die Anzahl der hergestellten Eier die zukünftige Anzahl von Hühnern vorhersagt. Wir führen den Test mit drei Verzögerungen durch:

from statsmodels.tsa.stattools import grangercausalitytests

#Granger-Kausalitätstest durchführen
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-Teststatistik ergibt 5,405 und der entsprechende p-Wert 0,0030.

Da der p-Wert kleiner als 0,05 ist, können wir die Nullhypothese des Tests verwerfen 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 verworfen haben, ist es tatsächlich möglich, dass es zu einer umgekehrten Kausalität kommt. Das heißt, es ist möglich, dass die Anzahl der Hühner dazu führt, dass sich die Anzahl der Eier ändert.

Um diese Möglichkeit auszuschließen, müssen wir den Granger-Kausalitätstest in umgekehrter Reihenfolge durchführen, wobei Hühner als Prädiktorvariable und Eier als Antwortvariable verwendet werden:

from statsmodels.tsa.stattools import grangercausalitytests

#Granger-Kausalitätstest durchführen
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-Teststatistik ergibt 0,5916 und der entsprechende p-Wert 0,6238.

Da der p-Wert nicht kleiner als 0,05 ist, können wir die Nullhypothese nicht ablehnen. Das heißt, die Anzahl der Hühner sagt nichts über die zukünftige Anzahl der Eier aus.

Daraus können wir schließen, dass die Kenntnis der Anzahl der Eier nützlich ist, um die zukünftige Anzahl der Hühner vorherzusagen.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere allgemeine Aufgaben mit Zeitreihen in Python ausführen:

So erstellen Sie ein Zeitreihendiagramm in Seaborn
So erstellen Sie ein Zeitreihendiagramm in Matplotlib

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: