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


Модуль statsmodels Python пропонує різноманітні функції та класи, які дозволяють вам адаптувати різні статистичні моделі.

Наступний покроковий приклад показує, як виконати логістичну регресію за допомогою функцій statsmodels.

Крок 1: Створіть дані

Спочатку давайте створимо pandas DataFrame, який містить три змінні:

  • Вивчені години (повне значення)
  • Метод дослідження (метод A або B)
  • Результат іспиту (склав чи не склав)

Ми підберемо логістичну регресійну модель, використовуючи вивчені години та метод навчання, щоб передбачити, складе чи ні студент певний іспит.

Наступний код показує, як створити pandas DataFrame:

 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
==================================================== ============================

Значення в стовпці coef вихідних даних повідомляють нам про середню зміну логарифмічних шансів здачі іспиту.

Наприклад:

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

Значення в P>|z| Стовпець представляє p-значення для кожного коефіцієнта.

Наприклад:

  • Метод дослідження має p-значення 0,934 . Оскільки це значення не менше 0,05, це означає, що немає статистично значущого зв’язку між вивченими годинами та складеністю студентом іспиту чи ні.
  • Досліджені години мають p-значення 0,045 . Оскільки це значення менше 0,05, це означає, що існує статистично значущий зв’язок між годинами навчання та складеністю студентом іспиту чи ні.

Крок 3: Оцініть продуктивність моделі

Щоб оцінити якість моделі логістичної регресії, ми можемо переглянути два показники у вихідних даних:

1. Кличка Р-квадрат

Це значення можна вважати заміною значення R-квадрат для моделі лінійної регресії.

Він розраховується як відношення максимізованої логарифмічної функції правдоподібності від нульової моделі до повної моделі.

Це значення може коливатися від 0 до 1, причому вищі значення вказують на кращу підгонку моделі.

У цьому прикладі псевдо R-квадрат становить 0,1894 , що є досить низьким. Це говорить нам про те, що змінні предикторів моделі не дуже добре прогнозують значення змінної відповіді.

2. Р-значення LLR

Це значення можна розглядати як замінник p-значення для загального F-значення моделі лінійної регресії.

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

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

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в Python:

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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *