Байесовский информационный критерий , часто обозначаемый аббревиатурой 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