So führen sie den white-test in python durch (schritt für schritt)


Der White-Test wird verwendet, um festzustellen, ob in einem Regressionsmodell Heteroskedastizität vorliegt.

Heteroskedastizität bezieht sich auf die ungleichmäßige Verteilung von Residuen auf verschiedenen Ebenen einer Antwortvariablen , was gegen die Annahme verstößt, dass Residuen auf jeder Ebene der Antwortvariablen gleichmäßig verteilt sind.

Das folgende Schritt-für-Schritt-Beispiel zeigt, wie der White-Test in Python durchgeführt wird, um festzustellen, ob Heteroskedastizität in einem bestimmten Regressionsmodell ein Problem darstellt oder nicht.

Schritt 1: Daten laden

In diesem Beispiel passen wir ein multiples lineares Regressionsmodell mithilfe des mtcars- Datensatzes an.

Der folgende Code zeigt, wie dieser Datensatz in einen Pandas-DataFrame geladen wird:

 from sklearn. linear_model import LinearRegression
from statsmodels. stats . diagnostic import het_white
import statsmodels. api as sm
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"

#read in data
data = pd. read_csv (url)

#view summary of data
data. info ()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 12 columns):
 # Column Non-Null Count Dtype  
--- ------ -------------- -----  
 0 model 32 non-null object 
 1 mpg 32 non-null float64
 2 cyl 32 non-null int64  
 3 disp 32 non-null float64
 4 hp 32 non-null int64  
 5 drat 32 non-null float64
 6 wt 32 non-null float64
 7 qsec 32 non-null float64
 8 vs 32 non-null int64  
 9 am 32 non-null int64  
 10 gear 32 non-null int64  
 11 carb 32 non-null int64  
dtypes: float64(5), int64(6), object(1)

Schritt 2: Passen Sie das Regressionsmodell an

Als nächstes passen wir ein Regressionsmodell an, das mpg als Antwortvariable und disp und hp als zwei Prädiktorvariablen verwendet:

 #define response variable
y = data[' mpg ']

#define predictor variables
x = data[[' disp ', ' hp ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit regression model
model = sm. OLS (y,x). fit ()

Schritt 3: Führen Sie den White-Test durch

Als Nächstes verwenden wir die Funktion het_white() aus dem statsmodels-Paket, um den White-Test durchzuführen und festzustellen, ob Heteroskedastizität im Regressionsmodell vorhanden ist:

 #perform White's test
white_test = het_white(model. resid , model. model . exog )

#define labels to use for output of White's test
labels = ['Test Statistic', 'Test Statistic p-value', 'F-Statistic', 'F-Test p-value']

#print results of White's test
print (dict(zip(labels, white_test)))

{'Test Statistic': 7.076620330416624, 'Test Statistic p-value': 0.21500404394263936,
 'F-Statistic': 1.4764621093131864, 'F-Test p-value': 0.23147065943879694}

So interpretieren Sie das Ergebnis:

  • Die Teststatistik ist X2 = 7,0766 .
  • Der entsprechende p-Wert beträgt 0,215 .

Der White-Test verwendet die folgenden Null- und Alternativhypothesen:

  • Null (H 0 ) : Homoskedastizität ist vorhanden (Residuen sind ebenfalls verstreut)
  • Alternative ( HA ): Heteroskedastizität liegt vor (Residuen sind nicht gleichmäßig verteilt)

Da der p-Wert nicht kleiner als 0,05 ist, können wir die Nullhypothese nicht ablehnen.

Dies bedeutet, dass wir nicht über ausreichende Beweise verfügen, um zu behaupten, dass Heteroskedastizität im Regressionsmodell vorhanden ist.

Was macht man als nächstes

Wenn Sie die Nullhypothese des White-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 Heteroskedastizität vorliegt. In diesem Fall sind die in der Regressionsausgabetabelle angezeigten Standardfehler möglicherweise unzuverlässig.

Es gibt zwei gängige Möglichkeiten, dieses Problem zu lösen:

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. Dies führt häufig zum Verschwinden der Heteroskedastizität.

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 das Problem der Heteroskedastizität beseitigt werden.

Zusätzliche Ressourcen

Die folgenden Tutorials bieten zusätzliche Informationen zur linearen Regression in Python:

Eine vollständige Anleitung zur linearen Regression in Python
So erstellen Sie ein Restdiagramm in Python
So berechnen Sie VIF in Python

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert