Как рассчитать BIC в Python


Байесовский информационный критерий , часто обозначаемый аббревиатурой BIC , представляет собой метрику, которая используется для сравнения качества соответствия различных регрессионных моделей.

На практике мы подгоняем несколько регрессионных моделей к одному и тому же набору данных и выбираем модель с наименьшим значением BIC в качестве модели, которая лучше всего соответствует данным.

Мы используем следующую формулу для расчета BIC:

БИК: (RSS+log(n)dσ̂ 2 ) / n

куда:

  • d: количество предикторов
  • n: Всего наблюдений
  • σ̂: оценка дисперсии ошибки, связанной с каждым измерением отклика в регрессионной модели.
  • RSS: Остаточная сумма квадратов регрессионной модели
  • TSS: общая сумма квадратов регрессионной модели.

Чтобы вычислить BIC нескольких моделей регрессии в Python, мы можем использовать функцию statsmodels.regression.linear_model.OLS() , которая имеет свойство bic, сообщающее нам значение BIC для данной модели.

В следующем примере показано, как использовать эту функцию для расчета и интерпретации BIC для различных моделей регрессии в Python.

Пример: расчет BIC регрессионных моделей в 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 : миль на галлон = β 0 + β 1 (расход) + β 2 (qsec)
  • Модель 2 : миль на галлон = β 0 + β 1 (расход) + β 2 (вес)

Следующий код показывает, как подобрать первую модель и рассчитать BIC:

#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 BIC of model
print(model. bic )

174.23905634994506

БИК этой модели оказывается 174.239 .

Далее мы подгоним вторую модель и рассчитаем BIC:

#define response variable
y = data['mpg']

#define predictor variables
x = data[['disp', 'wt']]

#add constant to predictor variables
x = sm.add_constant (x)

#fit regression model
model = sm. OLS (y, x). fit ()

#view BIC of model
print(model. bic )

166.56499196301334

БИК этой модели оказывается равным 166,565 .

Поскольку вторая модель имеет более низкое значение BIC, она является более подходящей моделью.

После того, как мы определили эту модель как лучшую, мы можем приступить к подбору модели и проанализировать результаты, включая значение R-квадрата и бета-коэффициенты, чтобы определить точную взаимосвязь между набором переменных-предикторов и переменной отклика .

Дополнительные ресурсы

Две другие метрики, которые обычно используются для сравнения соответствия регрессионных моделей, — это AIC и скорректированный R-квадрат .

В следующих руководствах объясняется, как рассчитать каждую из этих метрик для регрессионных моделей в Python:

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

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