Comment tracer une courbe ROC à l’aide de ggplot2 (avec exemples)
La régression logistique est une méthode statistique que nous utilisons pour ajuster un modèle de régression lorsque la variable de réponse est binaire. Pour évaluer dans quelle mesure un modèle de régression logistique s’adapte à un ensemble de données, nous pouvons examiner les deux métriques suivantes :
- Sensibilité : probabilité que le modèle prédise un résultat positif pour une observation alors que le résultat est effectivement positif.
- Spécificité : la probabilité que le modèle prédise un résultat négatif pour une observation alors que le résultat est effectivement négatif.
Un moyen simple de visualiser ces deux mesures consiste à créer une courbe ROC , qui est un graphique qui affiche la sensibilité et la spécificité d’un modèle de régression logistique.
Ce tutoriel explique comment créer et interpréter une courbe ROC dans R à l’aide du package de visualisation ggplot2.
Exemple : courbe ROC utilisant ggplot2
Supposons que nous ajustions le modèle de régression logistique suivant dans R :
#load Default dataset from ISLR book data <- ISLR::Default #divide dataset into training and test set set.seed(1) sample <- sample(c(TRUE, FALSE), nrow(data), replace=TRUE, prob=c(0.7,0.3)) train <- data[sample, ] test <- data[!sample, ] #fit logistic regression model to training set model <- glm(default~student+balance+income, family="binomial", data=train) #use model to make predictions on test set predicted <- predict(model, test, type="response")
Pour visualiser les performances du modèle de régression logistique sur l’ensemble de test, nous pouvons créer un tracé ROC à l’aide de la fonction ggroc() du package pROC :
#load necessary packages library(ggplot2) library(pROC) #define object to plot rocobj <- roc(test$default, predicted) #create ROC plot ggroc(rocobj)
L’axe des y affiche la sensibilité (le vrai taux positif) du modèle et l’axe des x affiche la spécificité (le vrai taux négatif) du modèle.
Notez que nous pouvons ajouter du style au tracé et également fournir un titre contenant l’AUC (aire sous la courbe) du tracé :
#load necessary packages library(ggplot2) library(pROC) #define object to plot and calculate AUC rocobj <- roc(test$default, predicted) auc <- round(auc(test$default, predicted),4) #create ROC plot ggroc(rocobj, colour = 'steelblue', size = 2) + ggtitle(paste0('ROC Curve ', '(AUC = ', auc, ')'))
A noter que l’on peut également modifier le thème de l’intrigue :
#create ROC plot with minimal theme ggroc(rocobj, colour = 'steelblue', size = 2) + ggtitle(paste0('ROC Curve ', '(AUC = ', auc, ')')) + theme_minimal()
Reportez-vous à cet article pour un guide des meilleurs thèmes ggplot2.