Ggplot2 kullanarak roc eğrisi nasıl çizilir (örneklerle)
Lojistik regresyon, yanıt değişkeni ikili olduğunda bir regresyon modeline uymak için kullandığımız istatistiksel bir yöntemdir. Lojistik regresyon modelinin bir veri kümesine ne kadar iyi uyduğunu değerlendirmek için aşağıdaki iki ölçüme bakabiliriz:
- Duyarlılık: Sonuç gerçekten olumluyken modelin bir gözlem için olumlu bir sonuç tahmin etme olasılığı.
- Özgüllük: Sonuç gerçekten negatif olduğunda modelin bir gözlem için negatif bir sonuç öngörme olasılığı.
Bu iki ölçümü görselleştirmenin basit bir yolu, lojistik regresyon modelinin duyarlılığını ve özgüllüğünü gösteren bir grafik olan ROC eğrisi oluşturmaktır.
Bu eğitimde, ggplot2 görselleştirme paketini kullanarak R’de bir ROC eğrisinin nasıl oluşturulacağı ve yorumlanacağı açıklanmaktadır.
Örnek: ggplot2 kullanan ROC eğrisi
R’de aşağıdaki lojistik regresyon modeline uyduğumuzu varsayalım:
#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 ")
Lojistik regresyon modelinin test kümesindeki performansını görselleştirmek için pROC paketindeki ggroc() işlevini kullanarak bir ROC grafiği oluşturabiliriz:
#load necessary packages library (ggplot2) library (pROC) #define object to plot rocobj <- roc(test$default, predicted) #create ROC plot ggroc(rocobj)
Y ekseni modelin duyarlılığını (gerçek pozitif oranı), x ekseni ise modelin özgüllüğünü (gerçek negatif oranı) gösterir.
Grafiğe stil ekleyebileceğimizi ve ayrıca grafiğin AUC’sini (eğri altındaki alan) içeren bir başlık sağlayabileceğimizi unutmayın:
#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, ' ) '))
Ayrıca olay örgüsünün temasını da değiştirebileceğinizi unutmayın:
#create ROC plot with minimal theme ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) + theme_minimal()
En iyi ggplot2 temalarına ilişkin bir kılavuz için bu makaleye bakın.