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é ?