如何从R中的fpr序列中获取特定的tpr?

问题描述 投票:1回答:1

我想在指定的假阳性率下获得真正的阳性率,在fpr = 0,0.002,0.01时说,....是否有一种简单的方法可以做到这一点?我试过了

performance <- performance(rocr,"tpr","fpr") [email protected][[1]] [email protected][[1]] ,我可以得到所有的fpr和tpr。我该怎么从这里开始?非常感谢!

r roc
1个回答
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,]
© www.soinside.com 2019 - 2024. All rights reserved.