Як розрахувати bic в python


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

На практиці ми підбираємо кілька моделей регресії до одного набору даних і вибираємо модель із найнижчим значенням 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 : mpg = β 0 + β 1 (disp) + β 2 (qsec)
  • Модель 2 : mpg = β 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

BIC цієї моделі виявляється 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

BIC цієї моделі виявляється 166.565 .

Оскільки друга модель має нижче значення BIC, вона найкраще підходить.

Коли ми визначимо цю модель як найкращу, ми можемо продовжити підгонку моделі та проаналізувати результати, включаючи значення R-квадрат і бета-коефіцієнти, щоб визначити точний зв’язок між набором прогнозних змінних і змінною відповіді .

Додаткові ресурси

Двома іншими часто використовуваними показниками для порівняння відповідності регресійних моделей є AIC і скоригований R-квадрат .

У наступних посібниках пояснюється, як обчислити кожен із цих показників для моделей регресії в Python:

Як розрахувати AIC регресійних моделей у Python
Як розрахувати скоригований R-квадрат у Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *