Как рассчитать AIC регрессионных моделей в Python


Информационный критерий Акаике (AIC) — это показатель, который используется для сравнения соответствия различных моделей регрессии.

Он рассчитывается как:

АИК = 2К – 2 лн (Л)

куда:

  • 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.