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


Модуль Python statsmodels предлагает множество функций и классов, которые позволяют адаптировать различные статистические модели.

В следующем пошаговом примере показано, как выполнить логистическую регрессию с помощью функций statsmodels.

Шаг 1. Создайте данные

Сначала давайте создадим DataFrame pandas, содержащий три переменные:

  • Учебные часы (полная стоимость)
  • Метод исследования (метод А или Б)
  • Результат экзамена (сдал или не сдал)

Мы подберем модель логистической регрессии, используя изученные часы и метод обучения, чтобы предсказать, сдаст ли студент тот или иной экзамен.

Следующий код показывает, как создать DataFrame pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' result ': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0,
                              0, 1, 1, 1, 0, 1, 1, 1, 1, 1],
                   ' hours ': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6,
                            5, 8, 8, 7, 6, 7, 5, 4, 8, 9],
                   ' method ': ['A', 'A', 'A', 'B', 'B', 'B', 'B',
                             'B', 'B', 'A', 'B', 'A', 'B', 'B',
                             'A', 'A', 'B', 'A', 'B', 'A']})

#view first five rows of DataFrame
df. head ()

	result hours method
0 0 1 A
1 1 2 A
2 0 2 A
3 0 2 B
4 0 3 B

Шаг 2. Подберите модель логистической регрессии

Далее мы подгоним модель логистической регрессии с помощью функции logit() :

 import statsmodels. formula . api as smf

#fit logistic regression model
model = smf. logit (' result~hours+method ', data=df). fit ()

#view model summary
print ( model.summary ())

Optimization completed successfully.
         Current function value: 0.557786
         Iterations 5
                           Logit Regression Results                           
==================================================== ============================
Dept. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
==================================================== ============================
                  coef std err z P>|z| [0.025 0.975]
-------------------------------------------------- -----------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[TB] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
==================================================== ============================

Значения в столбце «коэф» выходных данных говорят нам о среднем изменении логарифмических шансов на сдачу экзамена.

Например:

  • Использование метода обучения B связано со средним увеличением логарифмических шансов сдачи экзамена на 0,0875 по сравнению с использованием метода обучения A.
  • Каждый дополнительный час обучения связан со средним увеличением шансов на сдачу экзамена в среднем на 0,4909 .

Значения в P>|z| В столбце представлены значения p для каждого коэффициента.

Например:

  • Метод исследования имеет значение p 0,934 . Поскольку это значение не менее 0,05, это означает, что нет статистически значимой связи между количеством изученных часов и тем, сдаст ли студент экзамен.
  • Изученные часы имеют p-значение 0,045 . Поскольку это значение меньше 0,05, это означает, что существует статистически значимая связь между учебными часами и тем, сдаст ли студент экзамен.

Шаг 3. Оцените производительность модели

Чтобы оценить качество модели логистической регрессии, мы можем посмотреть на два показателя в выходных данных:

1. Никнейм R-квадрат

Это значение можно считать заменой значения R-квадрата для модели линейной регрессии.

Он рассчитывается как отношение максимизированной функции логарифмического правдоподобия нулевой модели к полной модели.

Это значение может варьироваться от 0 до 1, причем более высокие значения указывают на лучшее соответствие модели.

В этом примере псевдозначение R-квадрата равно 0,1894 , что довольно мало. Это говорит нам о том, что переменные-предикторы модели не очень хорошо прогнозируют значение переменной отклика.

2. P-значение LLR

Это значение можно считать заменой значения p для общего значения F модели линейной регрессии.

Если это значение ниже определенного порога (например, α = 0,05), мы можем заключить, что модель в целом «полезна» и может лучше прогнозировать значения переменной отклика по сравнению с моделью без прогнозирующих переменных.

В этом примере p-значение LLR составляет 0,07375 . В зависимости от выбранного нами уровня значимости (например, 0,01, 0,05, 0,1) мы можем прийти к выводу, что модель в целом полезна, а может и нет.

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

В следующих руководствах объясняется, как выполнять другие распространенные задачи на Python:

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

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

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