Jak wykonać test współczynnika wiarygodności w pythonie


Test współczynnika wiarygodności porównuje stopień dopasowania dwóch zagnieżdżonych modeli regresji .

Model zagnieżdżony to po prostu model zawierający podzbiór zmiennych predykcyjnych w ogólnym modelu regresji.

Załóżmy na przykład, że mamy następujący model regresji z czterema zmiennymi predykcyjnymi:

Y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 + β 4 x 4 + ε

Przykładem modelu zagnieżdżonego może być następujący model z tylko dwoma pierwotnymi zmiennymi predykcyjnymi:

Y = β 0 + β 1 x 1 + β 2 x 2 + ε

Aby ustalić, czy te dwa modele znacząco się różnią, możemy przeprowadzić test współczynnika wiarygodności, który wykorzystuje następujące hipotezy zerowe i alternatywne:

H 0 : Model pełny i model zagnieżdżony równie dobrze pasują do danych. Powinieneś więc użyć modelu zagnieżdżonego .

H A : Model pełny pasuje do danych znacznie lepiej niż model zagnieżdżony. Musisz więc użyć pełnego szablonu .

Jeśli wartość p testu jest poniżej pewnego poziomu istotności (np. 0,05), wówczas możemy odrzucić hipotezę zerową i stwierdzić, że pełny model zapewnia znacznie lepsze dopasowanie.

Poniższy przykład krok po kroku pokazuje, jak przeprowadzić test współczynnika wiarygodności w Pythonie.

Krok 1: Załaduj dane

W tym przykładzie pokażemy, jak dopasować następujące dwa modele regresji w Pythonie, korzystając z danych ze zbioru danych mtcars :

Pełny model: mpg = β 0 + β 1 dostępny + β 2 carb + β 3 KM + β 4 cyl

Model: mpg = β 0 + β 1 dostępne + β 2 węglowodany

Najpierw załadujemy zbiór danych:

 from sklearn. linear_model import LinearRegression
import statsmodels. api as sm
import pandas as pd
import scipy

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

Powiązane: Jak czytać pliki CSV za pomocą Pand

Krok 2: Dopasuj modele regresji

Najpierw dopasujemy pełny model i obliczymy logarytm wiarygodności modelu:

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

#define predictor variables
x1 = data[['disp', 'carb', 'hp', 'cyl']]

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

#fit regression model
full_model = sm. OLS (y1,x1). fit ()

#calculate log-likelihood of model
full_ll = full_model. llf

print (full_ll)

-77.55789711787898

Następnie dopasujemy zredukowany model i obliczymy logarytm wiarygodności modelu:

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

#define predictor variables
x2 = data[['disp', 'carb']]

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

#fit regression model
reduced_model = sm. OLS (y2, x2). fit ()

#calculate log-likelihood of model
reduced_ll = reduced_model. llf

print (reduced_ll)

-78.60301334355185

Krok 3: Wykonaj test logarytmicznej wiarygodności

Następnie użyjemy następującego kodu do przeprowadzenia testu wiarygodności:

 #calculate likelihood ratio Chi-Squared test statistic
LR_statistic = -2 * (reduced_ll-full_ll)

print (LR_statistic)

2.0902324513457415

#calculate p-value of test statistic using 2 degrees of freedom
p_val = scipy. stats . chi2 . sf (LR_statistic, 2)

print (p_val)

0.35165094613502257

Z wyniku widzimy, że statystyka testu chi-kwadrat wynosi 2,0902 , a odpowiadająca jej wartość p wynosi 0,3517 .

Ponieważ ta wartość p jest nie mniejsza niż 0,05, nie uda nam się odrzucić hipotezy zerowej.

Oznacza to, że model pełny i model zagnieżdżony równie dobrze pasują do danych. Musimy zatem zastosować model zagnieżdżony, ponieważ dodatkowe zmienne predykcyjne w modelu pełnym nie zapewniają znaczącej poprawy dopasowania.

Zatem nasz ostateczny model będzie wyglądał następująco:

mpg = β 0 + β 1 dostępne + β 2 węglowodany

Uwaga : Przy obliczaniu wartości p zastosowaliśmy 2 stopnie swobody, ponieważ odzwierciedlało to różnicę w całkowitych zmiennych predykcyjnych stosowanych pomiędzy dwoma modelami.

Dodatkowe zasoby

Poniższe tutoriale dostarczają dodatkowych informacji na temat używania modeli regresji w Pythonie:

Kompletny przewodnik po regresji liniowej w Pythonie
Jak wykonać regresję wielomianową w Pythonie
Jak przeprowadzić regresję logistyczną w Pythonie

Dodaj komentarz

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