Hoe bic in python te berekenen
Het Bayesiaanse informatiecriterium , vaak afgekort BIC , is een maatstaf die wordt gebruikt om de goodness of fit van verschillende regressiemodellen te vergelijken.
In de praktijk passen we meerdere regressiemodellen aan dezelfde dataset toe en kiezen we het model met de laagste BIC-waarde als het model dat het beste bij de data past.
Voor het berekenen van de BIC gebruiken wij de volgende formule:
BIC: (RSS+log(n)dσ̂ 2 ) / n
Goud:
- d: Het aantal voorspellers
- n: Totaal aantal waarnemingen
- σ̂: schatting van de foutvariantie die is gekoppeld aan elke responsmaatstaf in een regressiemodel
- RSS: Residuele som van kwadraten uit het regressiemodel
- TSS: Totale som van kwadraten van het regressiemodel
Om de BIC van meerdere regressiemodellen in Python te berekenen, kunnen we de functie statsmodels.regression.linear_model.OLS() gebruiken, die een eigenschap heeft genaamd bic die ons de BIC-waarde voor een bepaald model vertelt.
In het volgende voorbeeld ziet u hoe u deze functie kunt gebruiken om BIC voor verschillende regressiemodellen in Python te berekenen en te interpreteren.
Voorbeeld: bereken de BIC van regressiemodellen in Python
Stel dat we twee verschillende meervoudige lineaire regressiemodellen willen passen met behulp van variabelen uit de mtcars- dataset.
Eerst laden we deze dataset:
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
Vervolgens passen we de volgende twee regressiemodellen toe:
- Model 1 : mpg = β 0 + β 1 (disp) + β 2 (qsec)
- Model 2 : mpg = β 0 + β 1 (beschikbaar) + β 2 (gew)
De volgende code laat zien hoe u het eerste model past en de BIC berekent:
#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
De BIC van dit model blijkt 174.239 te zijn.
Vervolgens passen we het tweede model aan en berekenen we de 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
De BIC van dit model blijkt 166.565 te zijn.
Omdat het tweede model een lagere BIC-waarde heeft, is dit het best passende model.
Zodra we dit model als het beste hebben geïdentificeerd, kunnen we doorgaan met het aanpassen van het model en de resultaten analyseren, inclusief de R-kwadraatwaarde en bètacoëfficiënten, om de exacte relatie tussen de reeks voorspellende variabelen en deresponsvariabele te bepalen.
Aanvullende bronnen
Twee andere veelgebruikte maatstaven om de pasvorm van regressiemodellen te vergelijken zijn AIC en aangepaste R-kwadraat .
In de volgende tutorials wordt uitgelegd hoe u elk van deze statistieken voor regressiemodellen in Python kunt berekenen:
Hoe AIC van regressiemodellen in Python te berekenen
Hoe aangepaste R-kwadraat in Python te berekenen