Comment calculer le BIC en Python



Le critère d’information bayésien , souvent abrégé BIC , est une mesure utilisée pour comparer la qualité de l’ajustement de différents modèles de régression.

En pratique, nous ajustons plusieurs modèles de régression au même ensemble de données et choisissons le modèle avec la valeur BIC la plus basse comme modèle qui correspond le mieux aux données.

Nous utilisons la formule suivante pour calculer le BIC :

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

où:

  • d : Le nombre de prédicteurs
  • n : Observations totales
  • σ̂ : Estimation de la variance de l’erreur associée à chaque mesure de réponse dans un modèle de régression
  • RSS : Somme des carrés résiduelle du modèle de régression
  • TSS : Somme totale des carrés du modèle de régression

Pour calculer le BIC de plusieurs modèles de régression en Python, nous pouvons utiliser la fonction statsmodels.regression.linear_model.OLS() , qui possède une propriété appelée bic qui nous indique la valeur BIC pour un modèle donné.

L’exemple suivant montre comment utiliser cette fonction pour calculer et interpréter le BIC pour divers modèles de régression en Python.

Exemple : calculer le BIC des modèles de régression en Python

Supposons que nous souhaitions ajuster deux modèles de régression linéaire multiple différents en utilisant des variables de l’ensemble de données mtcars .

Tout d’abord, nous allons charger cet ensemble de données :

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

Ensuite, nous ajusterons les deux modèles de régression suivants :

  • Modèle 1 : mpg = β 0 + β 1 (disp)+ β 2 (qsec)
  • Modèle 2 : mpg = β 0 + β 1 (disp)+ β 2 (wt)

Le code suivant montre comment ajuster le premier modèle et calculer le 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

Le BIC de ce modèle s’avère être 174.239 .

Ensuite, nous ajusterons le deuxième modèle et calculerons le 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

Le BIC de ce modèle s’avère être 166.565 .

Étant donné que le deuxième modèle a une valeur BIC inférieure, il s’agit du modèle le mieux adapté.

Une fois que nous avons identifié ce modèle comme étant le meilleur, nous pouvons procéder à l’ajustement du modèle et analyser les résultats, y compris la valeur R au carré et les coefficients bêta, pour déterminer la relation exacte entre l’ensemble de variables prédictives et la variable de réponse .

Ressources additionnelles

Deux autres mesures couramment utilisées pour comparer l’ajustement des modèles de régression sont l’AIC et le R-carré ajusté .

Les didacticiels suivants expliquent comment calculer chacune de ces métriques pour les modèles de régression en Python :

Comment calculer l’AIC des modèles de régression en Python
Comment calculer le R-carré ajusté en Python

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *