Как рассчитать bic в python


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

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

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

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

Золото:

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

Чтобы вычислить BIC моделей множественной регрессии в Python, мы можем использовать функцию statsmodels.reгрессия.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/Statorials/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 (ксек)
  • Модель 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 .

Далее подойдем ко второй модели и рассчитаем БИК:

 #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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *