Як виконати тест співвідношення правдоподібності в python
Перевірка співвідношення правдоподібності порівнює відповідність двох вкладених регресійних моделей .
Вкладена модель — це просто модель, яка містить підмножину змінних предикторів у загальній моделі регресії.
Наприклад, припустімо, що ми маємо таку модель регресії з чотирма змінними предикторів:
Y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 + β 4 x 4 + ε
Прикладом вкладеної моделі може бути наступна модель лише з двома початковими змінними предиктора:
Y = β 0 + β 1 x 1 + β 2 x 2 + ε
Щоб визначити, чи суттєво відрізняються ці дві моделі, ми можемо виконати перевірку співвідношення правдоподібності, яка використовує такі нульові та альтернативні гіпотези:
H 0 : повна модель і вкладена модель однаково добре відповідають даним. Отже, вам слід використовувати вкладену модель .
H A : повна модель відповідає даним значно краще, ніж вкладена модель. Отже, ви повинні використовувати повний шаблон .
Якщо p-значення тесту нижче певного рівня значущості (наприклад, 0,05), тоді ми можемо відхилити нульову гіпотезу та зробити висновок, що повна модель забезпечує значно кращу відповідність.
Наступний покроковий приклад показує, як виконати тест співвідношення ймовірності в Python.
Крок 1. Завантажте дані
У цьому прикладі ми покажемо, як підібрати наступні дві моделі регресії в Python, використовуючи дані з набору даних mtcars :
Повна модель: mpg = β 0 + β 1 доступний + β 2 вуглеводів + β 3 к.с. + β 4 цил.
Модель: mpg = β 0 + β 1 доступний + β 2 вуглеводів
Спочатку ми завантажимо набір даних:
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/Statology/Python-Guides/main/mtcars.csv" #read in data data = pd. read_csv (url)
Пов’язане: Як читати файли CSV за допомогою Pandas
Крок 2. Підберіть регресійні моделі
Спочатку ми підберемо повну модель і обчислимо логарифм правдоподібності моделі:
#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
Далі ми підберемо скорочену модель і обчислимо логарифм правдоподібності моделі:
#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
Крок 3: Виконайте логарифмічний тест правдоподібності
Далі ми використаємо наступний код для перевірки правдоподібності:
#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
З результату ми бачимо, що статистика хі-квадрат становить 2,0902 , а відповідне значення p — 0,3517 .
Оскільки це p-значення не менше 0,05, ми не зможемо відхилити нульову гіпотезу.
Це означає, що повна модель і вкладена модель однаково добре відповідають даним. Тому ми повинні використовувати вкладену модель, тому що додаткові змінні предикторів у повній моделі не забезпечують значного покращення відповідності.
Отже, наша кінцева модель буде такою:
mpg = β 0 + β 1 доступний + β 2 вуглеводів
Примітка . Ми використали 2 ступені свободи під час розрахунку значення p, оскільки воно представляє різницю в загальних змінних предикторів, які використовуються між двома моделями.
Додаткові ресурси
У наступних посібниках надається додаткова інформація про використання регресійних моделей у Python:
Повний посібник із лінійної регресії в Python
Як виконати поліноміальну регресію в Python
Як виконати логістичну регресію в Python