Comment effectuer un test de rapport de vraisemblance dans R



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 suivant montre comment effectuer un test de rapport de vraisemblance dans R.

Exemple : test du rapport de vraisemblance dans R

Le code suivant montre comment ajuster les deux modèles de régression suivants dans R à l’aide des données de l’ensemble de données mtcars intégré :

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

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

Nous utiliserons la fonction lrtest() du package lmtest pour effectuer un test de rapport de vraisemblance sur ces deux modèles :

library(lmtest)

#fit full model
model_full <- lm(mpg ~ disp + carb + hp + cyl, data = mtcars)

#fit reduced model
model_reduced <- lm(mpg ~ disp + carb, data = mtcars)

#perform likelihood ratio test for differences in models
lrtest(model_full, model_reduced)

Likelihood ratio test

Model 1: mpg ~ disp + carb + hp + cyl
Model 2: mpg ~ disp + carb
  #Df  LogLik Df  Chisq Pr(>Chisq)
1   6 -77.558                     
2   4 -78.603 -2 2.0902     0.3517

À partir du résultat, nous pouvons voir que la statistique du test du chi carré est de 2,0902 et que 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.

Nous pourrions alors effectuer un autre test du rapport de vraisemblance pour déterminer si un modèle avec une seule variable prédictive est significativement différent d’un modèle avec les deux prédicteurs :

library(lmtest)

#fit full model
model_full <- lm(mpg ~ disp + carb, data = mtcars)

#fit reduced model
model_reduced <- lm(mpg ~ disp, data = mtcars)

#perform likelihood ratio test for differences in models
lrtest(model_full, model_reduced)

Likelihood ratio test

Model 1: mpg ~ disp + carb
Model 2: mpg ~ disp
  #Df  LogLik Df  Chisq Pr(>Chisq)   
1   4 -78.603                        
2   3 -82.105 -1 7.0034   0.008136 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

À partir du résultat, nous pouvons voir que la valeur p du test du rapport de vraisemblance est 0,008136 . Puisque ce chiffre est inférieur à 0,05, nous rejetterions l’hypothèse nulle.

Ainsi, nous conclurions que le modèle à deux prédicteurs offre une amélioration significative de l’ajustement par rapport au modèle à un seul prédicteur.

Ainsi, notre modèle final serait :

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

Ressources additionnelles

Comment effectuer une régression linéaire simple dans R
Comment effectuer une régression linéaire multiple dans R
Comment interpréter les codes de signification dans R

Ajouter un commentaire

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