我想以指定的假阳性率获得真实的阳性率,例如,在fpr = 0、0.002、0.01 ...的情况下,是否有一种简单的方法?我尝试过
performance <- performance(rocr,"tpr","fpr")
fpr=performance@x.values[[1]]
tpr=performance@y.values[[1]]
我可以得到所有的fpr和tpr。我应该从这里继续吗?非常感谢!
答案 0 :(得分:1)
做类似TC Zhang suggests in comment的事情是行不通的:
tpr[which(fpr == yourfpr)]
这是因为,尽管ROC曲线被称为“曲线”,但它实际上是一组离散点,并且目标FPR与ROC曲线中的一个精确匹配的可能性很低。
因此,您需要做一些内插操作才能在给定的FPR点获得TPR。幸运的是,pROC软件包可以为您做到这一点(免责声明:我是pROC的作者)。因此,假设您具有以下ROC曲线:
library(pROC)
data(aSAH)
myroc <- roc(aSAH$outcome, aSAH$wfns)
首先,您需要将FPR率转换为pROC可以理解的特异性:
target.fpr <- c(0, 0.002, 0.01, 0.2, 0.1, 0.2, 1)
target.sp <- 1 - target.fpr
然后您使用coords
函数:
coords(myroc, x = target.sp, input = "specificity", ret = c("se", "sp"))
这将目标特异性作为输入,并返回它们以及匹配的灵敏度,这些灵敏度等于您感兴趣的真实阳性率或TPR。要获得TPR作为向量,请执行以下操作:
tpr <- coords(myroc, x = target.sp, input = "specificity", ret = "se")[1,]