2016-05-15 555 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

太棒了!非常感谢你! –