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)
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, ' ) '))
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()
Przewodnik po najlepszych motywach ggplot2 znajdziesz w tym artykule .