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) 

ROC-curve in ggplot2

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

ROC-curve met AUC in ggplot2

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

ROC-curve in R met behulp van ggplot2

Raadpleegdit artikel voor een gids voor de beste ggplot2-thema’s.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert