Jak wykreślić krzywą roc za pomocą ggplot2 (z przykładami)


Regresja logistyczna to metoda statystyczna, której używamy do dopasowania modelu regresji, gdy zmienna odpowiedzi jest binarna. Aby ocenić, jak dobrze model regresji logistycznej pasuje do zbioru danych, możemy przyjrzeć się następującym dwóm metrykom:

  • Czułość: prawdopodobieństwo, że model przewiduje pozytywny wynik obserwacji, gdy wynik jest rzeczywiście pozytywny.
  • Specyficzność: prawdopodobieństwo, że model przewiduje negatywny wynik obserwacji, gdy wynik jest faktycznie negatywny.

Prostym sposobem wizualizacji tych dwóch metryk jest utworzenie krzywej ROC , czyli wykresu przedstawiającego czułość i swoistość modelu regresji logistycznej.

W tym samouczku wyjaśniono, jak utworzyć i zinterpretować krzywą ROC w języku R przy użyciu pakietu wizualizacji ggplot2.

Przykład: krzywa ROC przy użyciu ggplot2

Załóżmy, że dopasowujemy następujący model regresji logistycznej w 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 ")

Aby zwizualizować działanie modelu regresji logistycznej na zestawie testowym, możemy utworzyć wykres ROC za pomocą funkcji ggroc() z pakietu pROC :

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

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

#create ROC plot
ggroc(rocobj) 

Krzywa ROC w ggplot2

Oś y przedstawia czułość (prawdziwie dodatni współczynnik) modelu, a oś x przedstawia specyficzność (prawdziwie ujemny współczynnik) modelu.

Pamiętaj, że możemy dodać stylizację do fabuły, a także podać tytuł zawierający AUC (obszar pod krzywą) działki:

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

Krzywa ROC z AUC w ggplot2

Pamiętaj, że możesz także modyfikować tematykę fabuły:

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

Krzywa ROC w R przy użyciu ggplot2

Przewodnik po najlepszych motywach ggplot2 znajdziesz w tym artykule .

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *