Comment effectuer un test de rapport de vraisemblance en Python



Un test du rapport de vraisemblance compare la qualité de l’ajustement de deux modèles de régression emboîtés.

Un modèle imbriqué est simplement un modèle qui contient un sous-ensemble de variables prédictives dans le modèle de régression global.

Par exemple, supposons que nous ayons le modèle de régression suivant avec quatre variables prédictives :

Y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 + β 4 x 4 + ε

Un exemple de modèle imbriqué serait le modèle suivant avec seulement deux des variables prédictives d’origine :

Y = β 0 + β 1 x 1 + β 2 x 2 + ε

Pour déterminer si ces deux modèles sont significativement différents, nous pouvons effectuer un test du rapport de vraisemblance qui utilise les hypothèses nulles et alternatives suivantes :

H 0 : Le modèle complet et le modèle imbriqué s’ajustent aussi bien aux données. Ainsi, vous devez utiliser le modèle imbriqué .

H A : Le modèle complet s’adapte nettement mieux aux données que le modèle imbriqué. Vous devez donc utiliser le modèle complet .

Si la valeur p du test est inférieure à un certain niveau de signification (par exemple 0,05), nous pouvons alors rejeter l’hypothèse nulle et conclure que le modèle complet offre un ajustement nettement meilleur.

L’exemple étape par étape suivant montre comment effectuer un test de rapport de vraisemblance en Python.

Étape 1 : Charger les données

Dans cet exemple, nous allons montrer comment ajuster les deux modèles de régression suivants en Python à l’aide des données de l’ensemble de données mtcars :

Modèle complet : mpg = β 0 + β 1 disp + β 2 carb + β 3 ch + β 4 cyl

Modèle réduit : mpg = β 0 + β 1 disp + β 2 carb

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

from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
import pandas as pd
import scipy

#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)

Connexe : Comment lire des fichiers CSV avec Pandas

Étape 2 : Ajuster les modèles de régression

Tout d’abord, nous allons ajuster le modèle complet et calculer la log-vraisemblance du modèle :

#define response variable
y1 = data['mpg']

#define predictor variables
x1 = data[['disp', 'carb', 'hp', 'cyl']]

#add constant to predictor variables
x1 = sm.add_constant(x1)

#fit regression model
full_model = sm.OLS(y1, x1).fit()

#calculate log-likelihood of model
full_ll = full_model.llf

print(full_ll)

-77.55789711787898

Ensuite, nous ajusterons le modèle réduit et calculerons la log-vraisemblance du modèle :

#define response variable
y2 = data['mpg']

#define predictor variables
x2 = data[['disp', 'carb']]

#add constant to predictor variables
x2 = sm.add_constant(x2)

#fit regression model
reduced_model = sm.OLS(y2, x2).fit()

#calculate log-likelihood of model
reduced_ll = reduced_model.llf

print(reduced_ll)

-78.60301334355185

Étape 3 : Effectuer le test de log-vraisemblance

Ensuite, nous utiliserons le code suivant pour effectuer le test de vraisemblance :

#calculate likelihood ratio Chi-Squared test statistic
LR_statistic = -2*(reduced_ll-full_ll)

print(LR_statistic)

2.0902324513457415

#calculate p-value of test statistic using 2 degrees of freedom
p_val = scipy.stats.chi2.sf(LR_statistic, 2)

print(p_val)

0.35165094613502257

À partir du résultat, nous pouvons voir que la statistique du test du chi carré est de 2,0902 et la valeur p correspondante est de 0,3517 .

Puisque cette valeur p n’est pas inférieure à 0,05, nous ne parviendrons pas à rejeter l’hypothèse nulle.

Cela signifie que le modèle complet et le modèle imbriqué s’adaptent aussi bien aux données. Nous devons donc utiliser le modèle imbriqué, car les variables prédictives supplémentaires du modèle complet n’offrent pas d’amélioration significative de l’ajustement.

Ainsi, notre modèle final serait :

mpg = β 0 + β 1 disp + β 2 glucides

Remarque : Nous avons utilisé 2 degrés de liberté lors du calcul de la valeur p car cela représentait la différence entre le total des variables prédictives utilisées entre les deux modèles.

Ressources additionnelles

Les didacticiels suivants fournissent des informations supplémentaires sur l’utilisation des modèles de régression en Python :

Un guide complet de la régression linéaire en Python
Comment effectuer une régression polynomiale en Python
Comment effectuer une régression logistique en Python

Ajouter un commentaire

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