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