Як розрахувати aic регресійних моделей у python
Інформаційний критерій Akaike (AIC) — це показник, який використовується для порівняння відповідності різних регресійних моделей.
Він розраховується таким чином:
AIC = 2K – 2 ln (L)
золото:
- K: Кількість параметрів моделі. Значення K за замовчуванням дорівнює 2, тому модель лише з однією змінною предиктора матиме значення K 2+1 = 3.
- ln (L) : логарифм правдоподібності моделі. Це говорить нам про ймовірність моделі з урахуванням даних.
AIC розроблено, щоб знайти модель, яка пояснює найбільшу варіацію в даних, водночас штрафуючи моделі, які використовують надмірну кількість параметрів.
Після встановлення кількох регресійних моделей ви можете порівняти значення AIC кожної моделі. Модель з найнижчим AIC забезпечує найкраще прилягання.
Щоб обчислити AIC кількох регресійних моделей у Python, ми можемо використати функцію statsmodels.regression.linear_model.OLS() , яка має властивість під назвою aic , яка повідомляє нам значення AIC для даної моделі.
У наступному прикладі показано, як використовувати цю функцію для обчислення та інтерпретації AIC для різних моделей регресії в Python.
Приклад: обчислення та інтерпретація AIC у Python
Скажімо, ми хочемо підібрати дві різні моделі множинної лінійної регресії за допомогою змінних із набору даних mtcars .
Спочатку ми завантажимо цей набір даних:
from sklearn. linear_model import LinearRegression import statsmodels. api as sm import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv" #read in data data = pd. read_csv (url) #view head of data data. head () model mpg cyl disp hp drat wt qsec vs am gear carb 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Ось змінні предиктора, які ми будемо використовувати в кожній моделі:
- Змінні прогнозу в моделі 1: disp, hp, wt, qsec
- Змінні предиктора в моделі 2: disp, qsec
Наступний код показує, як підібрати першу модель і розрахувати AIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'hp', 'wt', 'qsec']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit regression model
model = sm. OLS (y,x). fit ()
#view AIC of model
print (model. aic )
157.06960941462438
AIC цієї моделі виходить 157,07 .
Далі підганяємо другу модель і розраховуємо AIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'qsec']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit regression model
model = sm. OLS (y,x). fit ()
#view AIC of model
print (model. aic )
169.84184864154588
AIC цієї моделі виходить 169,84 .
Оскільки перша модель має нижче значення AIC, вона є найкращою.
Коли ми визначимо цю модель як найкращу, ми можемо продовжити підгонку моделі та проаналізувати результати, включаючи значення R-квадрат і бета-коефіцієнти, щоб визначити точний зв’язок між набором прогнозних змінних і змінною відповіді .
Додаткові ресурси
Повний посібник із лінійної регресії в Python
Як розрахувати скоригований R-квадрат у Python