2016-05-15 447 views
1

我已經嘗試了2種方法繪製ROC曲線並獲得每個ROC曲線的AUC。R獲得AUC並同時繪製多個ROC曲線

方法1 - 第一種方法是簡單,但我不知道如何繪製多個ROC曲線一起。 我只是使用roc.curve(hacide.test$cls, pred_rose[,2]),輸出將顯示ROC曲線並給出AUC。

方法2 我現在可以繪製多個ROC曲線,但無法同時獲得AUC。 這是我繪製多個ROC曲線結合的方式:

library(ROCR) 
pd1 <- prediction(pred_rose[,2], hacide.test$cls) 
pf1 <- performance(pd1, "tpr","fpr") 

pd2 <- prediction(pred_both[,2], hacide.test$cls) 
pf2 <- performance(pd2, "tpr","fpr") 

plot(pf1, colorize = TRUE) 
plot(pf2, add = TRUE, colorize = TRUE) 

這是我得到的方式AUC:

pf <- performance(pd3, "auc") 
pf  # y.values is the AUC 

正如你所看到的,當我用這第二種方法,performance()方法用於獲得ROC曲線和AUC是不同的。這裏pf1,pf2的輸出沒有AUC值。

方法1比較簡單,但是您是否知道如何使用方法1將ROC曲線繪製在一起並保持每個AUC值?

回答

4

您可以使用pROC包執行此操作。使用在調用中print.auc參數plot

library(pROC) 
roc_rose <- plot(roc(hacide.test$cls, pred_rose[,2]), print.auc = TRUE, col = "blue") 

而對於第二個ROC曲線您需要更改AUC的y位置,並在同一地塊使用add情節兩條曲線:

roc_rose <- plot(roc(hacide.test$cls, pred_both[,2]), print.auc = TRUE, 
       col = "green", print.auc.y = .4, add = TRUE) 
+0

它仍然分別顯示情節.... –

+0

這是因爲我未能將roc.curve更改爲roc。我編輯了我的答案,它現在應該工作。 – Calimo

+0

太棒了!非常感謝你! –