Как рассчитать 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