使用 R 中的 AUC 包更改 ROC 截止值

Change ROC cutoff values using AUC package in R

我正在使用 AUC package.

在 R 中构建 ROC 图

这些是 300 点数据集的前 5 个点,比较生存概率与观察到的生存率。

predict1 <- c(0.755, 0.755, 0.937, 0.978, 0.755)
y <- c(1,1,1,0,1)

ROC_null_a <- auc(roc(predict1, as.factor(y)))
plot(roc(predict1, as.factor(y)))

我想更改 ROC 图的截止值。文档描述了这些值,但没有具体说明如何在 roc 或 auc 函数中实际使用它们:

“值

包含以下元素的列表:

cutoffs  A numeric vector of threshold values

fpr  A numeric vector of false positive rates corresponding to the threshold values

tpr  A numeric vector of true positive rates corresponding to the threshold values"

示例仅包括基本功能,不演示使用 cutoffs、tpr 或 fpr。

我对如何将截止值合并到 roc 函数感到困惑。以前有人在 AUC 包中使用过截止值吗?我知道它可以用其他包来完成,但如果可能的话我想坚持使用这个包,因为我的数据和代码已经为它设置好了。

听起来你想计算对应于指定概率截止值的真阳性率 (TPR) 和假阳性率 (FPR)。考虑为您的数据计算 roc 对象:

library(AUC)
predict1 <- c(0.755, 0.755, 0.937, 0.978, 0.755)
y <- c(1,1,1,0,1)
r <- roc(predict1, as.factor(y))

给定一个截断值 p(我在下面将其设置为 0.85),您可以使用 r$cutoffs 计算输出的 ROC 对象中与您选择的截断值相对应的位置:

p <- 0.85
index <- max(which(r$cutoffs >= p))

最后,您可以在计算出的位置查看TPR和FPR:

r$tpr[index]
# [1] 0.25
r$fpr[index]
# [1] 1

在这种情况下,我们可以手动确认这个结果是正确的:1/4 (25%) 的正观察结果预测值为 0.85 或更高,确认 TPR 为 0.25,而 1/1 (100%)负面观察的预测值为 0.85 或更高,确认 FPR 为 1。