Повний посібник із лінійної регресії в python
Лінійна регресія – це метод, який ми можемо використати для розуміння зв’язку між однією або декількома змінними предиктора та змінною відповіді.
Цей посібник пояснює, як виконувати лінійну регресію в Python.
Приклад: лінійна регресія в Python
Припустімо, ми хочемо знати, чи впливає кількість годин, витрачених на навчання, і кількість складених практичних іспитів на оцінку, яку студент отримує на даному іспиті.
Щоб дослідити цей зв’язок, ми можемо виконати наступні кроки в Python для виконання множинної лінійної регресії.
Крок 1: Введіть дані.
Спочатку ми створимо pandas DataFrame для зберігання нашого набору даних:
import pandas as pd #create data df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6, 5, 3, 4, 6, 2, 1, 2], 'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2, 4, 4, 4, 5, 1, 0, 1], 'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96, 90, 82, 85, 99, 83, 62, 76]}) #view data df hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72 5 1 2 69 6 5 1 94 7 4 1 94 8 2 0 88 9 4 3 92 10 4 4 90 11 3 3 75 12 6 2 96 13 5 4 90 14 3 4 82 15 4 4 85 16 6 5 99 17 2 1 83 18 1 0 62 19 2 1 76
Крок 2: Виконайте лінійну регресію.
Далі ми використаємо функцію OLS() із бібліотеки statsmodels, щоб виконати звичайну регресію методом найменших квадратів, використовуючи «години» та «іспити» як змінні прогностики та «оцінку» як змінну відповіді:
import statsmodels.api as sm #define response variable y = df['score'] #define predictor variables x = df[['hours', 'exams']] #add constant to predictor variables x = sm.add_constant(x) #fit linear regression model model = sm.OLS(y, x).fit() #view model summary print(model.summary()) OLS Regression Results ==================================================== ============================ Dept. Variable: R-squared score: 0.734 Model: OLS Adj. R-squared: 0.703 Method: Least Squares F-statistic: 23.46 Date: Fri, 24 Jul 2020 Prob (F-statistic): 1.29e-05 Time: 13:20:31 Log-Likelihood: -60.354 No. Observations: 20 AIC: 126.7 Df Residuals: 17 BIC: 129.7 Df Model: 2 Covariance Type: non-robust ==================================================== ============================ coef std err t P>|t| [0.025 0.975] -------------------------------------------------- ---------------------------- const 67.6735 2.816 24.033 0.000 61.733 73.614 hours 5.5557 0.899 6.179 0.000 3.659 7.453 exams -0.6017 0.914 -0.658 0.519 -2.531 1.327 ==================================================== ============================ Omnibus: 0.341 Durbin-Watson: 1.506 Prob(Omnibus): 0.843 Jarque-Bera (JB): 0.196 Skew: -0.216 Prob(JB): 0.907 Kurtosis: 2,782 Cond. No. 10.8 ==================================================== ============================
Крок 3: Інтерпретація результатів.
Ось як інтерпретувати найбільш відповідні числа в результаті:
R у квадраті: 0,734 . Це називається коефіцієнтом детермінації. Це частка дисперсії у змінній відповіді, яку можна пояснити змінними предиктора. У цьому прикладі 73,4% розбіжностей в результатах іспитів пояснюється кількістю вивчених годин і кількістю складених підготовчих іспитів.
F-статистика: 23,46 . Це загальна F-статистика регресійної моделі.
Вірогідність (F-статистика): 1.29e-05. Це p-значення, пов’язане із загальною статистикою F. Це говорить нам про те, чи є модель регресії в цілому статистично значущою чи ні. Іншими словами, це повідомляє нам, чи мають об’єднані дві прогностичні змінні статистично значущий зв’язок зі змінною відповіді. У цьому випадку p-значення менше 0,05, що вказує на те, що змінні-прогнози «навчальні години» та «здані підготовчі іспити» разом мають статистично значущий зв’язок із оцінкою за іспит.
coef: Коефіцієнти кожної змінної предиктора говорять нам про очікувану середню зміну змінної відповіді, припускаючи, що інша змінна предиктора залишається постійною. Наприклад, за кожну додаткову годину, витрачену на навчання, очікується, що середній бал іспиту збільшиться на 5,56 , припускаючи, що складені практичні іспити залишаються незмінними.
Ось інший спосіб поглянути на це: якщо учень А та учень Б складають однакову кількість підготовчих іспитів, але учень А навчається на годину довше, тоді учень А має набрати на 5,56 бала більше, ніж учень Б.
Ми інтерпретуємо коефіцієнт перехоплення так, що очікуваний іспитовий бал для студента, який навчається без годин і не складає підготовчих іспитів, становить 67,67 .
P>|t|. Індивідуальні p-значення говорять нам, чи кожна змінна предиктора є статистично значущою чи ні. Ми бачимо, що «години» є статистично значущими (p = 0,00), тоді як «іспити» (p = 0,52) не є статистично значущим при α = 0,05. Оскільки термін «іспити» не є статистично значущим, ми можемо вирішити видалити його з моделі.
Розрахункове рівняння регресії: ми можемо використати коефіцієнти з вихідних даних моделі, щоб створити наступне оцінюване рівняння регресії:
екзаменаційний бал = 67,67 + 5,56*(години) – 0,60*(підготовчі іспити)
Ми можемо використати це розраховане рівняння регресії, щоб обчислити очікуваний іспитовий бал для студента на основі кількості годин навчання та кількості практичних іспитів, які він складає. Наприклад, студент, який займається три години і складає підготовчий іспит, повинен отримати оцінку 83,75 :
Майте на увазі, що оскільки минулі підготовчі іспити не були статистично значущими (p = 0,52), ми можемо вирішити видалити їх, оскільки вони не покращують загальну модель. У цьому випадку ми могли б виконати просту лінійну регресію, використовуючи лише досліджувані години як змінну предиктора.
Крок 4: Перевірте припущення моделі.
Виконавши лінійну регресію, ви можете перевірити кілька припущень, щоб переконатися, що результати регресійної моделі надійні. Ці припущення включають:
Припущення №1: існує лінійний зв’язок між змінними прогнозу та змінною відповіді.
- Перевірте це припущення, створивши графік залишків , який відображає підігнані значення проти залишків для моделі регресії.
Гіпотеза №2: Незалежність залишків.
- Перевірте цю гіпотезу, виконавши тест Дарбіна-Ватсона .
Гіпотеза №3: гомоскедастичність залишків.
- Перевірте цю гіпотезу, виконавши тест Брейша-Пейгана .
Припущення № 4: Нормальність залишків.
- Візуально перевірте це припущення за допомогою графіка QQ .
- Перевірте цю гіпотезу за допомогою формальних тестів, таких як тест Жарке-Бера або тест Андерсона-Дарлінга .
Припущення №5: перевірте, чи немає мультиколінеарності серед змінних предиктора.
- Перевірте цю гіпотезу, обчисливши значення VIF кожної змінної предиктора.
Якщо ці припущення виконуються, ви можете бути впевнені, що результати вашої моделі множинної лінійної регресії надійні.
Ви можете знайти повний код Python, використаний у цьому посібнику, тут .