Comment tracer une courbe de régression logistique dans R
Souvent, vous souhaiterez peut-être tracer la courbe d’un modèle de régression logistique ajusté dans R.
Heureusement, c’est assez facile à faire et ce tutoriel explique comment le faire à la fois en base R et en ggplot2.
Exemple : tracer une courbe de régression logistique en base R
Le code suivant montre comment ajuster un modèle de régression logistique à l’aide de variables de l’ensemble de données mtcars intégré dans R, puis comment tracer la courbe de régression logistique :
#fit logistic regression model model <- glm(vs ~ hp, data=mtcars, family=binomial) #define new data frame that contains predictor variable newdata <- data.frame(hp=seq(min(mtcars$hp), max(mtcars$hp),len=500)) #use fitted model to predict values of vs newdata$vs = predict(model, newdata, type="response") #plot logistic regression curve plot(vs ~ hp, data=mtcars, col="steelblue") lines(vs ~ hp, newdata, lwd=2)
L’axe des x affiche les valeurs de la variable prédictive hp et l’axe des y affiche la probabilité prédite de la variable de réponse am .
Nous pouvons clairement voir que des valeurs plus élevées de la variable prédictive hp sont associées à des probabilités plus faibles que la variable de réponse vs soit égale à 1.
Exemple : tracer une courbe de régression logistique dans ggplot2
Le code suivant montre comment ajuster le même modèle de régression logistique et comment tracer la courbe de régression logistique à l’aide de la bibliothèque de visualisation de données ggplot2 :
library(ggplot2) #plot logistic regression curve ggplot(mtcars, aes(x=hp, y=vs)) + geom_point(alpha=.5) + stat_smooth(method="glm", se=FALSE, method.args = list(family=binomial))
Notez qu’il s’agit exactement de la même courbe produite dans l’exemple précédent en utilisant la base R.
N’hésitez pas à modifier également le style de la courbe. Par exemple, nous pourrions transformer la courbe en une ligne pointillée rouge :
library(ggplot2) #plot logistic regression curve ggplot(mtcars, aes(x=hp, y=vs)) + geom_point(alpha=.5) + stat_smooth(method="glm", se=FALSE, method.args = list(family=binomial), col="red", lty=2)
Ressources additionnelles
Introduction à la régression logistique
Comment effectuer une régression logistique dans R (étape par étape)
Comment effectuer une régression logistique en Python (étape par étape)
Comment utiliser la fonction seq dans R