Comment calculer R-carré pour glm dans R



Souvent, lorsque nous ajustons un modèle de régression linéaire, nous utilisons le R au carré pour évaluer dans quelle mesure un modèle s’adapte aux données.

R au carré représente la proportion de la variance de la variable de réponse qui peut être expliquée par les variables prédictives dans un modèle de régression.

Ce nombre va de 0 à 1, les valeurs plus élevées indiquant un meilleur ajustement du modèle.

Cependant, il n’existe pas de valeur R au carré pour les modèles linéaires généraux tels que les modèles de régression logistique et les modèles de régression de Poisson .

Au lieu de cela, nous pouvons calculer une métrique connue sous le nom de R-Squared de McFadden , qui va de 0 à un peu moins de 1, avec des valeurs plus élevées indiquant un meilleur ajustement du modèle.

Nous utilisons la formule suivante pour calculer le R carré de McFadden :

R-Squared de McFadden = 1 – ( modèle log de vraisemblance / log de vraisemblance nul )

où:

  • modèle de vraisemblance logarithmique : valeur de vraisemblance logarithmique du modèle ajusté actuel
  • log de vraisemblance nulle : valeur de vraisemblance log du modèle nul (modèle avec interception uniquement)

En pratique, des valeurs supérieures à 0,40 indiquent qu’un modèle s’adapte très bien aux données.

L’exemple suivant montre comment calculer le R-carré de McFadden pour un modèle de régression logistique dans R.

Exemple : Calcul du R au carré de McFadden dans R

Pour cet exemple, nous utiliserons l’ensemble de données par défaut du package ISLR. Nous pouvons utiliser le code suivant pour charger et afficher un résumé de l’ensemble de données :

#install and load ISLR package
install.packages('ISLR')
library(ISLR)

#define dataset
data <- ISLR::Default

#view summary of dataset
summary(data)

 default    student       balance           income     
 No :9667   No :7056   Min.   :   0.0   Min.   :  772  
 Yes: 333   Yes:2944   1st Qu.: 481.7   1st Qu.:21340  
                       Median : 823.6   Median :34553  
                       Mean   : 835.4   Mean   :33517  
                       3rd Qu.:1166.3   3rd Qu.:43808  
                       Max.   :2654.3   Max.   :73554  

#find total observations in dataset
nrow(data)

[1] 10000

Cet ensemble de données contient les informations suivantes sur 10 000 individus :

  • défaut : indique si un individu a fait défaut ou non.
  • étudiant : indique si un individu est étudiant ou non.
  • solde : Solde moyen porté par un individu.
  • revenu : Revenu de l’individu.

Nous utiliserons le statut d’étudiant, le solde bancaire et le revenu pour construire un modèle de régression logistique qui prédit la probabilité qu’un individu donné fasse défaut :

#fit logistic regression model
model <- glm(default~student+balance+income, family='binomial', data=data)

#view model summary
summary(model)

Call:
glm(formula = default ~ balance + student + income, family = "binomial", 
    data = data)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.4691  -0.1418  -0.0557  -0.0203   3.7383  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -1.087e+01  4.923e-01 -22.080  < 2e-16 ***
balance      5.737e-03  2.319e-04  24.738  < 2e-16 ***
studentYes  -6.468e-01  2.363e-01  -2.738  0.00619 ** 
income       3.033e-06  8.203e-06   0.370  0.71152    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2920.6  on 9999  degrees of freedom
Residual deviance: 1571.5  on 9996  degrees of freedom
AIC: 1579.5

Number of Fisher Scoring iterations: 8

Ensuite, nous utiliserons la formule suivante pour calculer la valeur R au carré de McFadden pour ce modèle :

#calculate McFadden's R-squared for model
with(summary(model), 1 - deviance/null.deviance)

[1] 0.4619194

La valeur R au carré de McFadden s’avère être 0,4619194 . Cette valeur est assez élevée, ce qui indique que notre modèle s’adapte bien aux données et possède un pouvoir prédictif élevé.

Notez également que nous pourrions également utiliser la fonction pR2() du package pscl pour calculer la valeur R-carré de McFadden pour le modèle :

#install and load pscl package
install.packages('pscl')
library(pscl)

#calculate McFadden's R-squared for model
pR2(model)['McFadden']

 McFadden 
0.4619194

Notez que cette valeur correspond à celle calculée précédemment.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment calculer R-carré dans R
Comment calculer le R-carré ajusté en R
Qu’est-ce qu’une bonne valeur R au carré ?

Ajouter un commentaire

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