Як побудувати криву 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)
На осі ординат відображається чутливість (справжній позитивний коефіцієнт) моделі, а на осі х – специфічність (справжній негативний коефіцієнт) моделі.
Зауважте, що ми можемо додати стиль до графіка, а також надати назву, що містить 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, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) '))
Зверніть увагу, що ви також можете змінити тему сюжету:
#create ROC plot with minimal theme ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) + theme_minimal()
Зверніться до цієї статті , щоб дізнатися про найкращі теми ggplot2.