Как выполнить логистическую регрессию с использованием статистических моделей
Модуль 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