【问题标题】:compare the auc of four ROC curves in r比较 r 中四个 ROC 曲线的 auc
【发布时间】:2018-05-29 01:11:21
【问题描述】:

我想比较 R 中四个 roc 曲线的 auc。 我试过roc.test,但是这个函数只能比较两条曲线

roc.test(roc1,roc2)

R 有比较四条曲线的功能吗? 我知道在 stata 中我可以通过roccomp 比较 4 条曲线。有谁知道如何比较 R 中的四条曲线?

谢谢!!

【问题讨论】:

  • 我不熟悉Stata的roccomp函数。究竟要寻找什么,一个包含 AUC 和 95% 置信区间的表格、一个图、一个 p 值(其中 H0)?

标签: r roc auc


【解决方案1】:

我认为 roc.test 不存在,但您可以使用 library(caTools) 来执行此操作。

使用 'sapply'library(pROC) 也很容易比较 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 之间的绘图比较

方法二:

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 

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2019-04-11
    • 2016-09-11
    • 2015-11-24
    • 2016-01-17
    • 2016-08-04
    相关资源
    最近更新 更多