Как построить кривую ROC с помощью ggplot2 (с примерами)


Логистическая регрессия — это статистический метод, который мы используем для подбора модели регрессии, когда переменная отклика является бинарной. Чтобы оценить, насколько хорошо модель логистической регрессии соответствует набору данных, мы можем взглянуть на следующие две метрики:

  • Чувствительность: вероятность того, что модель предсказывает положительный результат для наблюдения, когда результат действительно положительный.
  • Специфичность: вероятность того, что модель предсказывает отрицательный результат для наблюдения, когда результат действительно отрицательный.

Один из простых способов визуализировать эти две метрики — создать кривую ROC , представляющую собой график, отображающий чувствительность и специфичность модели логистической регрессии.

В этом руководстве объясняется, как создать и интерпретировать кривую ROC в R с помощью пакета визуализации ggplot2.

Пример: кривая ROC с использованием ggplot2

Предположим, мы подгоняем следующую модель логистической регрессии в 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 ")

Чтобы визуализировать, насколько хорошо модель логистической регрессии работает на тестовом наборе, мы можем создать график ROC, используя функцию ggroc() из пакета pROC :

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

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

#create ROC plot
ggroc(rocobj) 

По оси Y отображается чувствительность (истинно положительный показатель) модели, а по оси X — специфичность (истинный отрицательный показатель) модели.

Обратите внимание, что мы можем добавить некоторые стили к графику, а также указать заголовок, который содержит AUC (площадь под кривой) для графика:

#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, colour = 'steelblue', size = 2 ) +
 ggtitle( paste0('ROC Curve', '(AUC =', auc, ')')) 

Обратите внимание, что мы также можем изменить тему сюжета:

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

Обратитесь к этой статье за руководством по лучшим темам ggplot2.