Jak obliczyć bic w pythonie


Bayesowskie kryterium informacyjne , często w skrócie BIC , jest miarą stosowaną do porównywania dobroci dopasowania różnych modeli regresji.

W praktyce dopasowujemy modele regresji wielokrotnej do tego samego zbioru danych i wybieramy model o najniższej wartości BIC jako model najlepiej pasujący do danych.

Do obliczenia BIC używamy następującego wzoru:

BIC: (RSS+log(n)dσ̂ 2 ) / n

Złoto:

  • d: Liczba predyktorów
  • n: Całkowita liczba obserwacji
  • σ̂: Oszacowanie wariancji błędu związanej z każdą miarą odpowiedzi w modelu regresji
  • RSS: Pozostała suma kwadratów z modelu regresji
  • TSS: Całkowita suma kwadratów modelu regresji

Aby obliczyć BIC modeli regresji wielokrotnej w Pythonie, możemy użyć funkcji statsmodels.regression.linear_model.OLS() , która ma właściwość zwaną bic, która informuje nas o wartości BIC dla danego modelu.

Poniższy przykład pokazuje, jak używać tej funkcji do obliczania i interpretowania BIC dla różnych modeli regresji w Pythonie.

Przykład: oblicz BIC modeli regresji w Pythonie

Załóżmy, że chcemy dopasować dwa różne modele regresji liniowej wielokrotnej, używając zmiennych ze zbioru danych mtcars .

Najpierw załadujemy ten zbiór danych:

 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

Następnie dopasujemy następujące dwa modele regresji:

  • Model 1 : mpg = β 0 + β 1 (disp) + β 2 (qsec)
  • Model 2 : mpg = β 0 + β 1 (dostępny) + β 2 (wagowo)

Poniższy kod pokazuje, jak dopasować pierwszy model i obliczyć 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 tego modelu okazuje się wynosić 174.239 .

Następnie dopasujemy drugi model i obliczymy 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 tego modelu okazuje się wynosić 166,565 .

Ponieważ drugi model ma niższą wartość BIC, jest to model najlepiej dopasowany.

Gdy uznamy ten model za najlepszy, możemy przystąpić do jego dopasowywania i przeanalizować wyniki, w tym wartość R-kwadrat i współczynniki beta, aby określić dokładny związek pomiędzy zestawem zmiennych predykcyjnych azmienną odpowiedzi .

Dodatkowe zasoby

Dwie inne powszechnie stosowane metryki do porównywania dopasowania modeli regresji to AIC i skorygowana wartość R-kwadrat .

Poniższe samouczki wyjaśniają, jak obliczyć każdą z tych metryk dla modeli regresji w Pythonie:

Jak obliczyć AIC modeli regresji w Pythonie
Jak obliczyć skorygowany R-kwadrat w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *