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)

Courbe ROC dans ggplot2

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, ')'))

Courbe ROC avec AUC dans ggplot2

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()

Courbe ROC dans R en utilisant ggplot2

Reportez-vous à cet article pour un guide des meilleurs thèmes ggplot2.

Ajouter un commentaire

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