gpt4 book ai didi

r - 比较r中四个ROC曲线的auc

转载 作者:行者123 更新时间:2023-12-04 03:02:37 24 4
gpt4 key购买 nike

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

roc.test(roc1,roc2)

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

谢谢!!

最佳答案

我不认为它与 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)

方法一:

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

方法2:

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

关于r - 比较r中四个ROC曲线的auc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47821936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com