R : Comment calculer les rapports de cotes dans un modèle de régression logistique



La régression logistique est une méthode que nous pouvons utiliser pour ajuster un modèle de régression lorsque la variable de réponse est binaire.

Lorsque vous ajustez un modèle de régression logistique dans R, les coefficients du résumé du modèle représentent la variation moyenne du logarithme des probabilités de la variable de réponse associée à une augmentation d’une unité de chaque variable prédictive.

Cependant, nous souhaitons souvent plutôt calculer le rapport de cotes pour les variables prédictives du modèle.

Pour calculer rapidement les rapports de cotes pour chaque variable prédictive du modèle, vous pouvez utiliser la syntaxe suivante :

exp(coef(model))

Vous pouvez également calculer un intervalle de confiance de 95 % pour chaque rapport de cotes en utilisant la syntaxe suivante :

exp(cbind(Odds_Ratio = coef(model), confint(model)))

L’exemple suivant montre comment utiliser cette syntaxe pour calculer et interpréter les rapports de cotes pour un modèle de régression logistique dans R.

Exemple : calcul des rapports de cotes dans un modèle de régression logistique dans R

Pour cet exemple, nous utiliserons l’ensemble de données par défaut du package ISLR dans R.

Nous pouvons utiliser le code suivant pour charger et afficher un résumé de l’ensemble de données :

library(ISLR)

#view first five rows of Default dataset
head(Default)

  default student   balance    income
1      No      No  729.5265 44361.625
2      No     Yes  817.1804 12106.135
3      No      No 1073.5492 31767.139
4      No      No  529.2506 35704.494
5      No      No  785.6559 38463.496
6      No     Yes  919.5885  7491.559

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.

Nous pouvons utiliser la fonction glm et spécifier family=’binomial’ afin que R adapte un modèle de régression logistique à l’ensemble de données :

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

#disable scientific notation for model summary
options(scipen=999)

#view model summary
summary(model)

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

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.5586  -0.1353  -0.0519  -0.0177   3.7973  

Coefficients:
                 Estimate    Std. Error z value            Pr(>|z|)    
(Intercept) -11.478101194   0.623409555 -18.412 <0.0000000000000002 ***
studentYes   -0.493292438   0.285735949  -1.726              0.0843 .  
balance       0.005988059   0.000293765  20.384 <0.0000000000000002 ***
income        0.000007857   0.000009965   0.788              0.4304    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2021.1  on 6963  degrees of freedom
Residual deviance: 1065.4  on 6960  degrees of freedom
AIC: 1073.4

Number of Fisher Scoring iterations: 8

Les coefficients dans le résultat indiquent la variation moyenne du log des probabilités de défaut de paiement.

Par exemple, une augmentation d’une unité du solde est associée à une augmentation moyenne de 0,005988 du log de la probabilité de défaut.

Pour calculer à la place le rapport de cotes pour chaque variable prédictive, nous pouvons utiliser la syntaxe suivante :

#calculate odds ratio for each predictor variable
exp(coef(model))

  (Intercept)    studentYes       balance        income 
0.00001903854 0.52373166965 1.00575299051 1.00000303345 

Nous pouvons également calculer chaque rapport de cotes ainsi qu’un intervalle de confiance à 95 % pour chaque rapport de cotes :

#calculate odds ratio and 95% confidence interval for each predictor variable 
exp(cbind(Odds_Ratio = coef(model), confint(model)))

               Odds_Ratio          2.5 %       97.5 %
(Intercept) 0.00001903854 0.000007074481 0.0000487808
studentYes  0.52373166965 0.329882707270 0.8334223982
balance     1.00575299051 1.005308940686 1.0062238757
income      1.00000303345 0.999986952969 1.0000191246

Le rapport de cotes pour chaque coefficient représente l’augmentation moyenne des probabilités de défaut d’un individu, en supposant que toutes les autres variables prédictives restent constantes.

Par exemple, le solde de la variable prédictive a un rapport de cotes de 1,0057 .

Cela signifie que pour chaque dollar supplémentaire dans le solde porté par un individu, les chances que l’individu ne rembourse pas son prêt augmentent d’un facteur de 1,0057 , en supposant que le statut d’étudiant et les revenus restent constants .

Nous pouvons interpréter les rapports de cotes pour les autres variables prédictives de la même manière.

Ressources additionnelles

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

Comment utiliser Predict() avec le modèle de régression logistique dans R
Comment interpréter Pr(>|z|) dans la sortie de régression logistique dans R
Comment tracer une courbe de régression logistique dans R

Ajouter un commentaire

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