Jak wykonać test white'a w pythonie (krok po kroku)


Test White’a służy do określenia, czy w modelu regresji występuje heteroskedastyczność .

Heteroscedastyczność odnosi się do nierównomiernego rozproszenia reszt na różnych poziomachzmiennej odpowiedzi , co narusza założenie , że reszty są równomiernie rozproszone na każdym poziomie zmiennej odpowiedzi.

Poniższy przykład pokazuje krok po kroku, jak przeprowadzić test White’a w Pythonie, aby określić, czy heteroskedastyczność jest problemem w danym modelu regresji.

Krok 1: Załaduj dane

W tym przykładzie dopasujemy model regresji liniowej wielokrotnej , korzystając ze zbioru danych mtcars .

Poniższy kod pokazuje, jak załadować ten zestaw danych do ramki DataFrame pandy:

 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)

Krok 2: Dopasuj model regresji

Następnie dopasujemy model regresji, wykorzystując mpg jako zmienną odpowiedzi oraz disp i hp jako dwie zmienne predykcyjne:

 #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 ()

Krok 3: Wykonaj test White’a

Następnie użyjemy funkcji het_white() z pakietu statsmodels, aby wykonać test White’a w celu ustalenia, czy w modelu regresji występuje heteroskedastyczność:

 #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}

Oto jak zinterpretować wynik:

  • Statystyka testowa wynosi X2 = 7,0766 .
  • Odpowiednia wartość p wynosi 0,215 .

W teście White’a wykorzystuje się następujące hipotezy zerowe i alternatywne:

  • Null (H 0 ) : Homoskedastyczność jest obecna (reszty są również rozproszone)
  • Alternatywa ( HA ): Występuje heteroskedastyczność (reszty nie są równomiernie rozproszone)

Ponieważ wartość p jest nie mniejsza niż 0,05, nie możemy odrzucić hipotezy zerowej.

Oznacza to, że nie mamy wystarczających dowodów, aby twierdzić, że w modelu regresji występuje heteroskedastyczność.

Co zrobic nastepnie

Jeśli nie odrzucisz hipotezy zerowej testu White’a, oznacza to, że heteroskedastyczność nie występuje i możesz przystąpić do interpretacji wyniku pierwotnej regresji.

Jeśli jednak odrzucisz hipotezę zerową, oznacza to, że istnieje heteroskedastyczność. W takim przypadku błędy standardowe wyświetlane w tabeli wyników regresji mogą być niewiarygodne.

Istnieją dwa typowe sposoby rozwiązania tego problemu:

1. Przekształć zmienną odpowiedzi.

Możesz spróbować przeprowadzić transformację zmiennej odpowiedzi, na przykład biorąc log, pierwiastek kwadratowy lub pierwiastek sześcienny zmiennej odpowiedzi. Prowadzi to często do zaniku heteroskedastyczności.

2. Zastosuj regresję ważoną.

Regresja ważona przypisuje wagę każdemu punktowi danych na podstawie wariancji jego dopasowanej wartości. Zasadniczo nadaje to niskie wagi punktom danych o większych wariancjach, zmniejszając ich kwadraty resztowe. Zastosowanie odpowiednich wag może wyeliminować problem heteroskedastyczności.

Dodatkowe zasoby

Poniższe tutoriale dostarczają dodatkowych informacji na temat regresji liniowej w Pythonie:

Kompletny przewodnik po regresji liniowej w Pythonie
Jak utworzyć wykres resztkowy w Pythonie
Jak obliczyć VIF w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *