So zeichnen Sie eine ROC-Kurve mit ggplot2 (mit Beispielen)

Von Fabian
Kategorie: R
Tags: ggplot2
Lesezeit: 2 Minuten

Die logistische Regression ist eine statistische Methode, mit der wir ein Regressionsmodell anpassen, wenn die Antwortvariable binär ist. Um zu beurteilen, wie gut ein logistisches Regressionsmodell zu einem Datensatz passt, können wir die folgenden zwei Metriken betrachten:

  • Sensitivität: Die Wahrscheinlichkeit, dass das Modell ein positives Ergebnis für eine Beobachtung vorhersagt, wenn das Ergebnis tatsächlich positiv ist.
  • Spezifität: Die Wahrscheinlichkeit, dass das Modell ein negatives Ergebnis für eine Beobachtung vorhersagt, wenn das Ergebnis tatsächlich negativ ist.

Eine einfache Möglichkeit, diese beiden Metriken zu visualisieren, besteht darin, eine ROC-Kurve zu erstellen. Hierbei handelt es sich um ein Diagramm, das die Sensitivität und Spezifität eines logistischen Regressionsmodells anzeigt.

In diesem Tutorial wird erläutert, wie Sie mit dem Visualisierungspaket ggplot2 eine ROC-Kurve in R erstellen und interpretieren.

Beispiel: ROC-Kurve mit ggplot2

Angenommen, wir passen das folgende logistische Regressionsmodell in R an:

#laden des Standarddatensatzes aus ISLR
data <- ISLR::Default

#Datensatz in Trainings- und Testsatz aufteilen
set.seed(1)
sample <- sample(c(TRUE, FALSE), nrow(data), replace=TRUE, prob=c(0.7,0.3))
train <- data[sample, ]
test <- data[!sample, ]

# Anpassung des logistischen Regressionsmodells an das Trainingsset
model <- glm(default~student+balance+income, family="binomial", data=train)

#Verwenden Sie das Modell, um Vorhersagen für den Testsatz zu treffen
predicted <- predict(model, test, type="response")

Um zu veranschaulichen, wie gut das logistische Regressionsmodell auf dem Testsatz abschneidet, können wir mit der Funktion ggroc() aus dem pROC-Paket ein ROC-Diagramm erstellen:

# notwendige Pakete laden
library(ggplot2)
library(pROC)

# Objekt zum Diagramm definieren
rocobj <- roc(test$default, predicted)

# ROC-Plot erstellen
ggroc(rocobj)

ROC-Kurve in ggplot2

Die y-Achse zeigt die Empfindlichkeit (die wahre positive Rate) des Modells und die x-Achse zeigt die Spezifität (die wahre negative Rate) des Modells.

Beachten Sie, dass wir dem Plot etwas Stil hinzufügen und auch einen Titel bereitstellen können, der die AUC (Bereich unter der Kurve) für den Plot enthält:

# notwendige Pakete laden
library(ggplot2)
library(pROC)

#Definieren Sie das Objekt, um die AUC zu zeichnen und zu berechnen
rocobj <- roc(test$default, predicted)
auc <- round(auc(test$default, predicted),4)

# ROC-Plot erstellen
ggroc(rocobj, colour = 'steelblue', size = 2) +
  ggtitle(paste0('ROC Curve ', '(AUC = ', auc, ')'))

ROC-Kurve mit AUC in ggplot2

Beachten Sie, dass wir auch das Theme des Plots ändern können:

# ROC-Plot mit dem minimal theme erstellen
ggroc(rocobj, colour = 'steelblue', size = 2) +
  ggtitle(paste0('ROC Curve ', '(AUC = ', auc, ')')) +
  theme_minimal()

ROC-Kurve in R mit ggplot2

In diesem Artikel finden Sie eine Anleitung zu den besten ggplot2-Themen.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: