Jak wykonać test breuscha-pagana w pythonie
W analizie regresji heteroskedastyczność odnosi się do nierównomiernego rozproszenia reszt. Dokładniej rzecz biorąc, ma to miejsce w przypadku systematycznej zmiany rozkładu reszt w zakresie mierzonych wartości.
Heteroscedastyczność stanowi problem, ponieważ zwykła regresja metodą najmniejszych kwadratów (OLS) zakłada, że reszty pochodzą z populacji o homoskedastyczności , co oznacza stałą wariancję.
Kiedy w analizie regresji występuje heteroskedastyczność, trudno uwierzyć w wyniki analizy.
Jednym ze sposobów ustalenia, czy w analizie regresji występuje heteroskedastyczność, jest użycie testu Breuscha-Pagana .
W tym samouczku wyjaśniono, jak wykonać test Breuscha-Pagana w Pythonie.
Przykład: test Breuscha-Pagana w Pythonie
W tym przykładzie użyjemy następującego zbioru danych opisującego atrybuty 10 koszykarzy:
import numpy as np import pandas as pd #create dataset df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86], 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19], 'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]}) #view dataset df rating points assists rebounds 0 90 25 5 11 1 85 20 7 8 2 82 14 7 10 3 88 16 8 6 4 94 27 5 6 5 90 20 7 9 6 76 12 6 6 7 75 15 9 10 8 87 14 9 10 9 86 19 5 7
Dopasujemy model regresji liniowej, wykorzystując punktację jako zmienną odpowiedzi oraz punkty, asysty i zbiórki jako zmienne objaśniające. Następnie przeprowadzimy test Breuscha-Pagana, aby określić, czy w regresji występuje heteroskedastyczność.
Krok 1: Dopasuj model regresji liniowej.
Najpierw dopasujemy model regresji liniowej wielokrotnej:
import statsmodels.formula.api as smf #fit regression model fit = smf.ols('rating ~ points+assists+rebounds', data=df). fit () #view model summary print (fit.summary())
Krok 2: Wykonaj test Breuscha-Pagana.
Następnie przeprowadzimy test Breuscha-Pagana, aby określić, czy występuje heteroskedastyczność.
from statsmodels.compat import lzip import statsmodels.stats.api as sms #perform Bresuch-Pagan test names = ['Lagrange multiplier statistic', 'p-value', 'f-value', 'f p-value'] test = sms.het_breuschpagan(fit.resid, fit.model.exog) lzip(names, test) [('Lagrange multiply statistic', 6.003951995818433), ('p-value', 0.11141811013399583), ('f-value', 3.004944880309618), ('f p-value', 0.11663863538255281)]
Test Breuscha-Pagana wykorzystuje następujące hipotezy zerowe i alternatywne:
Hipoteza zerowa (H 0 ): Występuje homoscedastyczność.
Hipoteza alternatywna: (Ha): homoskedastyczność nie występuje (tzn. istnieje heteroskedastyczność)
W tym przykładzie statystyka mnożnika Lagrange’a dla testu wynosi 6,004 , a odpowiadająca jej wartość p wynosi 0,1114 . Ponieważ ta wartość p jest nie mniejsza niż 0,05, nie możemy odrzucić hipotezy zerowej. Nie mamy wystarczających dowodów, aby twierdzić, że w modelu regresji występuje heteroskedastyczność.
Jak naprawić heteroskedastyczność
W poprzednim przykładzie widzieliśmy, że w modelu regresji nie występowała heteroskedastyczność.
Jeśli jednak rzeczywiście występuje heteroskedastyczność, istnieją trzy typowe sposoby zaradzenia tej sytuacji:
1. Przekształć zmienną zależną. Jednym ze sposobów skorygowania heteroskedastyczności jest przekształcenie zmiennej zależnej w jakiś sposób. Typową transformacją jest po prostu pobranie logu zmiennej zależnej.
2. Zdefiniuj na nowo zmienną zależną. Innym sposobem skorygowania heteroskedastyczności jest przedefiniowanie zmiennej zależnej. Powszechnym sposobem na osiągnięcie tego jest użycie stawki dla zmiennej zależnej, a nie surowej wartości.
3. Zastosuj regresję ważoną. Innym sposobem skorygowania heteroskedastyczności jest zastosowanie regresji ważonej. Ten typ regresji przypisuje wagę każdemu punktowi danych na podstawie wariancji jego dopasowanej wartości. Zastosowanie odpowiednich wag może wyeliminować problem heteroskedastyczności.
Więcej szczegółów na temat każdej z tych trzech metod znajdziesz w tym artykule .