在R中比较四个ROC曲线的AUC

3

我想在R中比较四个ROC曲线的AUC。我尝试了roc.test,但是这个函数只能比较两条曲线。

roc.test(roc1,roc2)

R有没有一个用于比较四条曲线的函数? 我知道在Stata中,可以使用roccomp来比较4条曲线。有人知道如何在R中比较四条曲线吗?

谢谢!


我不熟悉Stata的roccomp函数。您到底需要什么,是包含AUC和95%置信区间的表格,还是一个图形,或者是一个带有H0的p值? - Calimo
1个回答

5
我认为roc.test中没有这个功能,但是你可以使用library(caTools)来实现。
使用library(pROC),通过'sapply'非常容易比较AUC值,下面是两种方法的描述: 两种方法的示例和设置: 在此构建模型:
    lm1 <- lm(am ~ disp + mpg, data= mtcars)
    lm2 <- lm(am ~ disp + hp, data= mtcars)
    lm3 <- lm(am ~ disp + wt, data= mtcars)

在这里预测模型:

predict1 <- predict(lm1, newdata=mtcars)
predict2 <- predict(lm2, newdata=mtcars)
predict3 <- predict(lm3, newdata=mtcars)

方法1:

library("caTools")
colAUC(cbind(predict1, predict2, predict3), mtcars$am, plotROC = T)

输出:

                 [,1]      [,2]      [,3]
    0 vs. 1 0.8380567 0.9433198 0.9433198

如果您选择使用plotROC = T,则会收到ROC之间的绘图比较。

enter image description here

方法二:

auc.val <- sapply(list(predict1, predict2, predict3),function(x)roc(pred=x,resp=mtcars$am)$auc)

最后在这里使用sapply计算AUC:

library(pROC)
auc.val <- sapply(list(predict1, predict2, predict3),function(x)roc(pred=x,resp=mtcars$am)$auc)

会返回这个:

> auc.val
[1] 0.8380567 0.9433198 0.9433198

如果您希望将此内容与名称一起打印,请在sapply中使用USE.NAMES

> auc.val <- sapply(list("lm1" = predict1, "lm2" = predict2,"lm3"= predict3),function(x)roc(pred=x,resp=mtcars$am)$auc, USE.NAMES = T)
> auc.val
      lm1       lm2       lm3 
0.8380567 0.9433198 0.9433198 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接