So führen sie den goldfeld-quandt-test in python durch
Der Goldfeld-Quandt-Test wird verwendet, um festzustellen, ob in einem Regressionsmodell Heteroskedastizität vorliegt.
Heteroskedastizität bezieht sich auf die ungleiche Streuung von Residuen auf verschiedenen Ebenen einer Antwortvariablen in einem Regressionsmodell.
Wenn Heteroskedastizität vorliegt, verstößt dies gegen eine der Schlüsselannahmen der linearen Regression , dass die Residuen auf jeder Ebene der Antwortvariablen gleichmäßig verteilt sind.
Dieses Tutorial bietet ein schrittweises Beispiel für die Durchführung des Goldfeld-Quandt-Tests in Python.
Schritt 1: Erstellen Sie den Datensatz
Für dieses Beispiel erstellen wir den folgenden Pandas-DataFrame, der Informationen zu den Lernstunden, den abgelegten Vorbereitungsprüfungen und den Abschlussprüfungsergebnissen von 13 Schülern einer Klasse enthält:
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view DataFrame print (df) hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72 5 1 2 69 6 5 1 94 7 4 1 94 8 2 0 88 9 4 3 92 10 4 4 90 11 3 3 75 12 6 2 96
Schritt 2: Passen Sie das lineare Regressionsmodell an
Als Nächstes passen wir ein multiples lineares Regressionsmodell an, wobei wir Stunden und Prüfungen als Prädiktorvariablen und die Punktzahl als Antwortvariable verwenden:
import statsmodels. api as sm
#define predictor and response variables
y = df[' score ']
x = df[[' hours ', ' exams ']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit linear regression model
model = sm. OLS (y,x). fit ()
#view model summary
print ( model.summary ())
OLS Regression Results
==================================================== ============================
Dept. Variable: R-squared score: 0.718
Model: OLS Adj. R-squared: 0.661
Method: Least Squares F-statistic: 12.70
Date: Mon, 31 Oct 2022 Prob (F-statistic): 0.00180
Time: 09:22:56 Log-Likelihood: -38.618
No. Observations: 13 AIC: 83.24
Df Residuals: 10 BIC: 84.93
Model: 2
Covariance Type: non-robust
==================================================== ============================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 71.4048 4.001 17.847 0.000 62.490 80.319
hours 5.1275 1.018 5.038 0.001 2.860 7.395
exams -1.2121 1.147 -1.057 0.315 -3.768 1.344
==================================================== ============================
Omnibus: 1,103 Durbin-Watson: 1,248
Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803
Skew: -0.289 Prob(JB): 0.669
Kurtosis: 1.928 Cond. No. 11.7
==================================================== ============================
Schritt 3: Führen Sie den Goldfeld-Quandt-Test durch
Als nächstes verwenden wir die Funktion statsmodels het_goldfeldquandt() , um den Goldfeld-Quandt-Test durchzuführen.
Hinweis : Der Goldfeld-Quandt-Test funktioniert, indem er eine Reihe von Beobachtungen entfernt, die sich in der Mitte des Datensatzes befinden, und dann testet, um festzustellen, ob sich die Verteilung der Residuen von den beiden resultierenden Datensätzen unterscheidet, die auf beiden Seiten der zentralen Beobachtungen binden.
Normalerweise entfernen wir etwa 20 % der gesamten Beobachtungen. In diesem Fall können wir das Drop- Argument verwenden, um anzugeben, dass wir 20 % der Beobachtungen entfernen möchten:
#perform Goldfeld-Quandt test sm. stats . diagnosis . het_goldfeldquandt (y, x, drop= 0.2 ) (1.7574505407790355, 0.38270288684680076, 'increasing')
So interpretieren Sie das Ergebnis:
- Die Teststatistik beträgt 1,757 .
- Der entsprechende p-Wert beträgt 0,383 .
Der Goldfeld-Quandt-Test verwendet die folgenden Null- und Alternativhypothesen:
- Null (H 0 ) : Homoskedastizität liegt vor.
- Alternative ( HA ): Heteroskedastizität liegt vor.
Da der p-Wert nicht kleiner als 0,05 ist, können wir die Nullhypothese nicht ablehnen.
Wir haben nicht genügend Beweise, um zu argumentieren, dass Heteroskedastizität ein Problem im Regressionsmodell ist.
Was macht man als nächstes
Wenn Sie die Nullhypothese des Goldfeld-Quandt-Tests nicht ablehnen, liegt keine Heteroskedastizität vor und Sie können mit der Interpretation des Ergebnisses der ursprünglichen Regression fortfahren.
Wenn Sie jedoch die Nullhypothese ablehnen, bedeutet dies, dass in den Daten Heteroskedastizität vorliegt. In diesem Fall sind die in der Regressionsausgabetabelle angezeigten Standardfehler möglicherweise unzuverlässig.
Es gibt mehrere gängige Möglichkeiten, dieses Problem zu lösen, darunter:
1. Transformieren Sie die Antwortvariable.
Sie können versuchen, eine Transformation an der Antwortvariablen durchzuführen, indem Sie beispielsweise den Logarithmus, die Quadratwurzel oder die Kubikwurzel der Antwortvariablen ziehen. Im Allgemeinen kann dies dazu führen, dass die Heteroskedastizität verschwindet.
2. Verwenden Sie eine gewichtete Regression.
Die gewichtete Regression weist jedem Datenpunkt basierend auf der Varianz seines angepassten Werts eine Gewichtung zu. Im Wesentlichen werden dadurch Datenpunkte mit höheren Varianzen niedrig gewichtet, wodurch ihre Restquadrate reduziert werden.
Wenn die entsprechenden Gewichte verwendet werden, kann die gewichtete Regression das Problem der Heteroskedastizität beseitigen.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in Python ausführen:
So führen Sie eine OLS-Regression in Python durch
So erstellen Sie ein Restdiagramm in Python
So führen Sie den White-Test in Python durch
So führen Sie einen Breusch-Pagan-Test in Python durch