Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绘制ROC曲线并计算特定截止信息下R的AUC_R_Curve_Roc_Auc - Fatal编程技术网

绘制ROC曲线并计算特定截止信息下R的AUC

绘制ROC曲线并计算特定截止信息下R的AUC,r,curve,roc,auc,R,Curve,Roc,Auc,鉴于这些数据: SN=灵敏度; SP=特异性 Cutpoint SN 1-SP 1 0.5 0.1 2 0.7 0.2 3 0.9 0.6 如何绘制ROC曲线并计算AUC。并比较两种不同ROC曲线之间的AUC。在大多数包(如pROC或ROCR)中,数据的输入与上面显示的不同。有人能建议用R或其他方法解决这个问题吗 ROCsdat <- data.frame(cutpoint

鉴于这些数据: SN=灵敏度; SP=特异性

Cutpoint        SN   1-SP
       1       0.5    0.1
       2       0.7    0.2
       3       0.9    0.6
如何绘制ROC曲线并计算AUC。并比较两种不同ROC曲线之间的AUC。在大多数包(如pROC或ROCR)中,数据的输入与上面显示的不同。有人能建议用R或其他方法解决这个问题吗

ROCsdat <- data.frame(cutpoint = c(5, 7, 9), TPR = c(0.56, 0.78, 0.91), FPR = c(0.01, 0.19, 0.58))

## plot version 1
op <- par(xaxs = "i", yaxs = "i")
plot(TPR ~ FPR, data = dat, xlim = c(0,1), ylim = c(0,1), type = "n")
with(dat, lines(c(0, FPR, 1), c(0, TPR, 1), type = "o", pch = 25, bg = "black"))
text(TPR ~ FPR, data = dat, pos = 3, labels = dat$cutpoint)
abline(0, 1)
par(op)

ROCsdat我想你可以手动计算:

dat <- data.frame(tpr=c(0, .5, .7, .9, 1), fpr=c(0, .1, .2, .6, 1))
sum(diff(dat$fpr) * (dat$tpr[-1] + dat$tpr[-length(dat$tpr)]) / 2)
# [1] 0.785

dat首先,我建议您访问当地的图书馆,找到一本关于R的介绍性书籍。在编写自己的代码之前,有一个坚实的基础是很重要的,在不真正理解什么是手段的情况下复制粘贴在internet上找到的代码最多也是有风险的

关于你的问题,我相信(0,0)和(1,1)坐标是ROC曲线的一部分,所以我将它们包括在数据中:

ROCsdat <- data.frame(cutpoint = c(-Inf, 5, 7, 9, Inf), TPR = c(0, 0.56, 0.78, 0.91, 1), FPR = c(0, 0.01, 0.19, 0.58, 1)) 
策划 我想你基本上掌握了阴谋,尽管我会写得稍有不同:

plot(TPR ~ FPR, data = ROCsdat, xlim = c(0,1), ylim = c(0,1), type="b", pch = 25, bg = "black")
text(TPR ~ FPR, data = ROCsdat, pos = 3, labels = ROCsdat$cutpoint)
abline(0, 1, col="lightgrey")
比较 为了进行比较,假设您在
auc1
auc2
中有两个auc。if/else语法如下所示:

if (auc1 < auc2) {
    cat("auc1 < auc2!\n")
} else if (auc1 == auc2) {
    cat("aucs are identical!\n")
} else {
    cat("auc1 > auc2!\n")
}
if(auc1auc2!\n”)
}

您是否只有这三点?如果您的数据与这些函数所使用的数据不同,那么请操作您的数据。要计算AUC,可以使用
Hmisc::somers2
。比较ROC曲线之间的AUC是不可取的。例如,我只给出了三个点,但我至少有六个截止点,每个截止点都有敏感性和特异性。好的,ROC曲线在x轴上有
1-特异性
,在y轴上有
敏感性
。您是否尝试过绘制?我在绘制它们时没有问题,但无法计算AUC?数据是否已加载(例如在数据框中)或是否已保存在文件中?能否详细解释此AUC的公式?以及我们如何比较两条ROC曲线的AUC来给出p值。谢谢!!我在计算ROC曲线各段的面积(每段都是梯形)。是的,我明白了!!。。你能帮我比较一下吗??比较两条ROC曲线的AUC?非常感谢您的帮助和代码。在AUC的比较中,我看到人们进行了非参数比较,如下链接所示。你能帮我一下吗???@RamT@RamT我相信你是根据一些数据生成了sn/sp的。使用这些数据作为您在问题中提到的其中一个包的输入。好的……我会试试这个!!
if (auc1 < auc2) {
    cat("auc1 < auc2!\n")
} else if (auc1 == auc2) {
    cat("aucs are identical!\n")
} else {
    cat("auc1 > auc2!\n")
}