Cara merencanakan kurva roc menggunakan ggplot2 (dengan contoh)
Regresi logistik adalah metode statistik yang kami gunakan untuk menyesuaikan model regresi jika variabel responsnya biner. Untuk mengevaluasi seberapa cocok model regresi logistik dengan kumpulan data, kita dapat melihat dua metrik berikut:
- Sensitivitas: probabilitas model memprediksi hasil positif untuk suatu observasi padahal hasilnya benar-benar positif.
- Kekhususan: probabilitas model memprediksi hasil negatif untuk suatu observasi padahal hasilnya sebenarnya negatif.
Cara sederhana untuk memvisualisasikan kedua metrik ini adalah dengan membuat kurva ROC , yaitu grafik yang menampilkan sensitivitas dan spesifisitas model regresi logistik.
Tutorial ini menjelaskan cara membuat dan menafsirkan kurva ROC di R menggunakan paket visualisasi ggplot2.
Contoh: Kurva ROC menggunakan ggplot2
Misalkan kita memasukkan model regresi logistik berikut ke 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 ")
Untuk memvisualisasikan performa model regresi logistik pada set pengujian, kita dapat membuat plot ROC menggunakan fungsi ggroc() dari paket pROC :
#load necessary packages library (ggplot2) library (pROC) #define object to plot rocobj <- roc(test$default, predicted) #create ROC plot ggroc(rocobj)
Sumbu y menampilkan sensitivitas (tingkat positif sebenarnya) model dan sumbu x menampilkan spesifisitas (tingkat negatif sebenarnya) model.
Perhatikan bahwa kita dapat menambahkan gaya pada plot dan juga memberikan judul yang berisi AUC (area di bawah kurva) plot:
#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, ' ) '))
Perhatikan bahwa Anda juga dapat mengubah tema plot:
#create ROC plot with minimal theme ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) + theme_minimal()
Lihatartikel ini untuk panduan tema ggplot2 terbaik.