Régression logistique

Code source

Quand l’utiliser ?

Étude de la probabilité de Y en fonction des Xi :

Régression logistique simple : un seule variable X
Régression logistique multiple : plusieurs variables Xi

Étape 1 : lecture du jeu de données

Importer le jeu de données

Utiliser le jeu de données :

attach(data)
Y = binaire
X1 = explicative1
X2 = explicative2

Étape 2 : description des données

Calcul des proportions de Y=1 et Y=0 dans les différentes modalités des Xi

Étape 3 : vérification des conditions d’application

Condition : pas de lien entre les variables explicatives

Premier cas : variables quantitatives
Hypothèses :
H0 : pas de corrélation linéaire entre X1 et X2
H1 : corrélation linéaire entre X1 et X2

Test de corrélation :

corr.test(X1,X2)

Conclusion au seuil 5% :
p-value < 0,05 → rejet de H0 → corrélation linéaire entre X1 et X2 → possibilité de se passer d’une des variables explicative
p-value > 0,05 → non rejet de H0 → pas de corrélation linéaire entre X1 et X2 → condition OK

Deuxième cas : variables qualitatives
Hypothèses :
H0 : pas d’influence de X1 sur X2
H1 : influence de X1 sur X2

Test du chi2 d’indépendance :

chisq.test(X1,X2)

Conclusion au seuil 5% :
p-value < 0,05 → rejet de H0 → influence de X1 sur X2 → possibilité de se passer d’une des variables explicative
p-value > 0,05 → non rejet de H0 → pas d’influence de X1 sur X2 → condition OK

Étape 4 : modélisation

Calcul du modèle logistique :

logistique = glm(Y~X1+X2,family="binomial")

Affichage des résultats :

summary(logistique)

Équation du modèle :

P[Y=1|X] = exp(A1*X1+A2*X2+B)/(1+exp(A1*X1+B))

Avec :

A1 = Estimate_X1
A2 = Estimate_X2
B = Estimate_intercept

Test de Wald (summary)

Hypothèses :
H0 : pas d’influence de Xi sur Y
H1 : influence de Xi sur Y

Conclusion au seuil 5% :
p-value < 0,05 → rejet de H0 → influence de Xi sur Y
p-value > 0,05 → non rejet de H0 → pas d’influence de Xi sur Y

Inconvénient : ce test a tendance à favoriser H0

Test du rapport de vraisemblance

Hypothèses :
H0 : pas d’influence de Xi sur Y
H1 : influence de Xi sur Y

anova(logistique,test="Chisq")

Conclusion au seuil 5% :
p-value < 0,05 → rejet de H0 → influence de Xi sur Y
p-value > 0,05 → non rejet de H0 → pas d’influence de Xi sur Y

Étape 5 : validation du modèle

Adéquation du modèle

Hypothèses :
H0 : le modèle est correct
H1 : le modèle n’est pas correct

Test de Hosmer & Lemeshow :

hoslem.test(Y,fitted(logistique))

Conclusion au seuil 5% :
p-value < 0,05 → rejet de H0 → le modèle n’est pas correct
p-value > 0,05 → non rejet de H0 → le modèle est cohérent avec les données

Étude des résidus

Résidus studentisés :

sresidus = rstudent(logistique)

Normailté des résidus

shapiro.test(sresidus)

Conclusion au seuil 5% :
p-value > 0,05 → non rejet de H0 → les résidus suivent une loi normale → condition OK

Linéarité

plot(X,sresidus)
abline(h=c(-2,0,2))

95 % des résidus entre -2 et 2 → condition OK

Valeurs influentes

influence.measures(logistique)

Évaluation de l’amélioration du modèle en enlevant chaque valeur une par une : les valeurs influentes comportent des étoiles

Étape 6 : performance du modèle

Calcul des prédictions par le modèle :

predictions = predict(logistique)

Tracer la courbe ROC :

courbe = roc(Y,predictions)
plot(courbe)

Calcul de l’AUC :

courbe$auc
AUC Performance
AUC = 0,5 pas de discrimination Y=0 et Y=1
0,7 < AUC < 0,8 discrimination acceptable
0,8 < AUC < 0,9 discrimination excellente
0,9 < AUC < 1 discrimination presque parfaite

L’AUC permet la comparaison entre modèles prédictifs

Pour comparer des modèles et sélectionner le meilleur on peut également chercher celui avec les AIC et BIC les plus petits

Plan