Как выполнить тест отношения правдоподобия в 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 :

Полная модель: миль на галлон = β 0 + β 1 доступно + β 2 карбюратор + β 3 л.с. + β 4 цил.

Модель: миль на галлон = β 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/Statorials/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, мы не сможем отвергнуть нулевую гипотезу.

Это означает, что полная модель и вложенная модель одинаково хорошо соответствуют данным. Поэтому мы должны использовать вложенную модель, поскольку дополнительные переменные-предикторы в полной модели не обеспечивают значительного улучшения соответствия.

Итак, наша окончательная модель будет такой:

миль на галлон = β 0 + β 1 доступные + β 2 углеводы

Примечание . При расчете значения p мы использовали 2 степени свободы, поскольку это представляет собой разницу в общем количестве переменных-предикторов, используемых между двумя моделями.

Дополнительные ресурсы

Следующие руководства предоставляют дополнительную информацию об использовании регрессионных моделей в Python:

Полное руководство по линейной регрессии в Python
Как выполнить полиномиальную регрессию в Python
Как выполнить логистическую регрессию в Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *