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)
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, ' ) '))
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()
Fare riferimento a questo articolo per una guida ai migliori temi ggplot2.