Hoe u de test van white in python uitvoert (stap voor stap)
De test van White wordt gebruikt om te bepalen of heteroscedasticiteit aanwezig is in een regressiemodel.
Heteroscedasticiteit verwijst naar de ongelijke spreiding van residuen op verschillende niveaus van eenresponsvariabele , wat in strijd is met de veronderstelling dat residuen gelijkmatig verspreid zijn op elk niveau van de responsvariabele.
Het volgende stapsgewijze voorbeeld laat zien hoe u de test van White in Python kunt uitvoeren om te bepalen of heteroscedasticiteit al dan niet een probleem is in een bepaald regressiemodel.
Stap 1: Gegevens laden
In dit voorbeeld passen we een meervoudig lineair regressiemodel toe met behulp van de mtcars- dataset.
De volgende code laat zien hoe u deze gegevensset in een pandas DataFrame laadt:
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)
Stap 2: Pas het regressiemodel aan
Vervolgens passen we een regressiemodel aan met mpg als responsvariabele en disp en hp als twee voorspellende variabelen:
#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 ()
Stap 3: Voer de test van White uit
Vervolgens zullen we de functie het_white() uit het statsmodels-pakket gebruiken om de test van White uit te voeren om te bepalen of heteroscedasticiteit aanwezig is in het regressiemodel:
#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}
Zo interpreteert u het resultaat:
- De teststatistiek is X2 = 7,0766 .
- De overeenkomstige p-waarde is 0,215 .
De Witte test gebruikt de volgende nul- en alternatieve hypothesen:
- Null (H 0 ) : Homoskedasticiteit is aanwezig (residuen zijn ook verspreid)
- Alternatief ( HA ): Er is heteroskedasticiteit aanwezig (residuen zijn niet gelijkmatig verspreid)
Omdat de p-waarde niet kleiner is dan 0,05, slagen we er niet in de nulhypothese te verwerpen.
Dit betekent dat we niet voldoende bewijs hebben om te beweren dat heteroscedasticiteit aanwezig is in het regressiemodel.
Wat nu te doen
Als u er niet in slaagt de nulhypothese van White’s test te verwerpen, is er geen sprake van heteroskedasticiteit en kunt u doorgaan met het interpreteren van het resultaat van de oorspronkelijke regressie.
Als u echter de nulhypothese verwerpt, betekent dit dat er sprake is van heteroskedasticiteit. In dit geval zijn de standaardfouten die in de regressie-uitvoertabel worden weergegeven mogelijk onbetrouwbaar.
Er zijn twee veelvoorkomende manieren om dit probleem op te lossen:
1. Transformeer de responsvariabele.
U kunt proberen een transformatie uit te voeren op de responsvariabele, bijvoorbeeld door de log-, vierkantswortel of derdemachtswortel van de responsvariabele te nemen. Dit resulteert vaak in het verdwijnen van heteroskedasticiteit.
2. Gebruik gewogen regressie.
Gewogen regressie kent een gewicht toe aan elk gegevenspunt op basis van de variantie van de aangepaste waarde. In wezen geeft dit een laag gewicht aan datapunten met hogere varianties, waardoor hun resterende kwadraten kleiner worden. Wanneer de juiste gewichten worden gebruikt, kan dit het probleem van heteroscedasticiteit elimineren.
Aanvullende bronnen
De volgende tutorials bieden aanvullende informatie over lineaire regressie in Python:
Een complete gids voor lineaire regressie in Python
Hoe u een restplot maakt in Python
Hoe VIF in Python te berekenen