Een roc-curve plotten met ggplot2 (met voorbeelden)
Logistische regressie is een statistische methode die we gebruiken om een regressiemodel te fitten wanneer de responsvariabele binair is. Om te evalueren hoe goed een logistisch regressiemodel bij een dataset past, kunnen we naar de volgende twee statistieken kijken:
- Gevoeligheid: waarschijnlijkheid dat het model een positief resultaat voorspelt voor een waarneming terwijl het resultaat daadwerkelijk positief is.
- Specificiteit: de kans dat het model een negatief resultaat voorspelt voor een waarneming terwijl het resultaat feitelijk negatief is.
Een eenvoudige manier om deze twee statistieken te visualiseren is door een ROC-curve te maken, een grafiek die de gevoeligheid en specificiteit van een logistisch regressiemodel weergeeft.
In deze zelfstudie wordt uitgelegd hoe u een ROC-curve in R maakt en interpreteert met behulp van het ggplot2-visualisatiepakket.
Voorbeeld: ROC-curve met ggplot2
Stel dat we het volgende logistische regressiemodel in R passen:
#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 ")
Om de prestaties van het logistische regressiemodel op de testset te visualiseren, kunnen we een ROC-plot maken met behulp van de ggroc() functie uit het pROC-pakket :
#load necessary packages library (ggplot2) library (pROC) #define object to plot rocobj <- roc(test$default, predicted) #create ROC plot ggroc(rocobj)
De y-as geeft de gevoeligheid (het werkelijk positieve percentage) van het model weer en de x-as geeft de specificiteit (het werkelijk negatieve percentage) van het model weer.
Merk op dat we styling aan de plot kunnen toevoegen en ook een titel kunnen opgeven die de AUC (gebied onder de curve) van de plot bevat:
#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, ' ) '))
Merk op dat u ook het thema van de plot kunt wijzigen:
#create ROC plot with minimal theme ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) + theme_minimal()
Raadpleegdit artikel voor een gids voor de beste ggplot2-thema’s.