So führen sie einen breusch-godfrey-test in python durch
Eine der wichtigsten Annahmen der linearen Regression besteht darin, dass zwischen den Residuen keine Korrelation besteht, d. h. die Residuen sind unabhängig.
Um die Autokorrelation erster Ordnung zu testen, können wir einen Durbin-Watson-Test durchführen. Wenn wir jedoch die Autokorrelation bei höheren Ordnungen testen möchten, müssen wir einen Breusch-Godfrey-Test durchführen.
Dieser Test basiert auf den folgenden Annahmen :
H 0 (Nullhypothese): Es gibt keine Autokorrelation einer Ordnung kleiner oder gleich p .
H A (Alternativhypothese): Es existiert eine Autokorrelation einer bestimmten Ordnung, die kleiner oder gleich p ist.
Die Teststatistik folgt einer Chi-Quadrat-Verteilung mit p Freiheitsgraden.
Wenn der p-Wert , der dieser Teststatistik entspricht, unter einem bestimmten Signifikanzniveau liegt (z. B. 0,05), können wir die Nullhypothese ablehnen und daraus schließen, dass eine Autokorrelation zwischen den Residuen ab einer bestimmten niedrigeren Ordnung oder gleich p besteht.
Um einen Breusch-Godfrey-Test in Python durchzuführen, können Sie die Funktion acorr_breusch_godfrey() aus der Statsmodels- Bibliothek verwenden.
Das folgende Schritt-für-Schritt-Beispiel erklärt, wie Sie den Breusch-Godfrey-Test in Python durchführen.
Schritt 1: Erstellen Sie die Daten
Erstellen wir zunächst einen Datensatz mit zwei Prädiktorvariablen (x1 und x2) und einer Antwortvariablen (y).
import pandas as pd #create dataset df = pd. DataFrame ({' x1 ': [3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20], ' x2 ': [7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19], ' y ': [24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49]}) #view first five rows of dataset df. head () x1 x2 y 0 3 7 24 1 4 7 25 2 4 8 25 3 5 8 27 4 8 12 29
Schritt 2: Passen Sie ein Regressionsmodell an
Dann können wir ein multiples lineares Regressionsmodell anpassen, indem wir x1 und x2 als Prädiktorvariablen und y als Antwortvariable verwenden.
import statsmodels. api as sm
#define response variable
y = df[' y ']
#define predictor variables
x = df[[' x1 ', ' x2 ']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit linear regression model
model = sm. OLS (y,x). fit ()
Schritt 3: Führen Sie den Breusch-Godfrey-Test durch
Als nächstes führen wir den Breusch-Godfrey-Test durch, um die Autokorrelation zwischen den Residuen der Ordnung p zu testen. Für dieses Beispiel wählen wir p = 3.
import statsmodels. stats . diagnosis as dg
#perform Breusch-Godfrey test at order p = 3
print (dg. acorr_breusch_godfrey (model, nlags= 3 ))
(8.70314827, 0.0335094873, 5.27967224, 0.0403980576)
Der erste Wert der Ausgabe stellt die Teststatistik dar und der zweite Wert stellt den entsprechenden p-Wert dar.
Aus dem Ergebnis können wir Folgendes erkennen:
- Teststatistik X 2 = 8,7031
- P-Wert = 0,0335
Da dieser p-Wert kleiner als 0,05 ist, können wir die Nullhypothese ablehnen und daraus schließen, dass eine Autokorrelation zwischen den Residuen der Ordnung kleiner oder gleich 3 besteht.
Wie man mit Autokorrelation umgeht
Wenn Sie die Nullhypothese ablehnen und zu dem Schluss kommen, dass in den Residuen eine Autokorrelation vorliegt, haben Sie mehrere Möglichkeiten, dieses Problem zu beheben, wenn Sie es für ernst genug halten:
- Für eine positive serielle Korrelation sollten Sie erwägen, dem Modell Verzögerungen der abhängigen und/oder unabhängigen Variablen hinzuzufügen.
- Stellen Sie bei negativer serieller Korrelation sicher, dass keine Ihrer Variablen übermäßig verzögert ist.
- Für die saisonale Korrelation sollten Sie erwägen, dem Modell saisonale Dummies hinzuzufügen.
Zusätzliche Ressourcen
Eine vollständige Anleitung zur linearen Regression in Python
So führen Sie einen Durbin-Watson-Test in Python durch
So führen Sie einen Ljung-Box-Test in Python durch