Come tracciare una curva roc utilizzando ggplot2 (con esempi)


La regressione logistica è un metodo statistico che utilizziamo per adattare un modello di regressione quando la variabile di risposta è binaria. Per valutare quanto bene un modello di regressione logistica si adatta a un set di dati, possiamo esaminare i due parametri seguenti:

  • Sensibilità: probabilità che il modello preveda un risultato positivo per un’osservazione quando il risultato è effettivamente positivo.
  • Specificità: la probabilità che il modello preveda un risultato negativo per un’osservazione quando il risultato è effettivamente negativo.

Un modo semplice per visualizzare queste due metriche è creare una curva ROC , ovvero un grafico che mostra la sensibilità e la specificità di un modello di regressione logistica.

Questo tutorial spiega come creare e interpretare una curva ROC in R utilizzando il pacchetto di visualizzazione ggplot2.

Esempio: curva ROC utilizzando ggplot2

Supponiamo di adattare il seguente modello di regressione logistica in 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 ")

Per visualizzare le prestazioni del modello di regressione logistica sul set di test, possiamo creare un grafico ROC utilizzando la funzione ggroc() dal pacchetto pROC :

 #load necessary packages
library (ggplot2)
library (pROC)

#define object to plot
rocobj <- roc(test$default, predicted)

#create ROC plot
ggroc(rocobj) 

Curva ROC in ggplot2

L’asse y mostra la sensibilità (il tasso di veri positivi) del modello e l’asse x mostra la specificità (il tasso di veri negativi) del modello.

Tieni presente che possiamo aggiungere uno stile alla trama e anche fornire un titolo contenente l’AUC (area sotto la curva) della trama:

 #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, color = ' steelblue ', size = 2 ) +
  ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) 

Curva ROC con AUC in ggplot2

Tieni presente che puoi anche modificare il tema della trama:

 #create ROC plot with minimal theme
ggroc(rocobj, color = ' steelblue ', size = 2 ) +
  ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) +
  theme_minimal() 

Curva ROC in R utilizzando ggplot2

Fare riferimento a questo articolo per una guida ai migliori temi ggplot2.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *