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

Как построить кривую 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) 
Кривая ROC в ggplot2

По оси 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, ')')) 
Кривая ROC с AUC в ggplot2

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

#create ROC plot with minimal theme
ggroc(rocobj, colour = 'steelblue', size = 2 ) +
 ggtitle( paste0('ROC Curve', '(AUC =', auc, ')')) +
 theme_minimal() 
Кривая ROC в R с использованием ggplot2

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.