使用pROC软件包的特异性/灵敏度与临界点

时间:2018-12-20 11:43:47

标签: plot logistic-regression metrics roc proc-r-package

我需要绘制以下图形,以便为逻辑回归模型选择最佳阈值。

Plot of Sensitivity and Specificity as a function of the Cutoff

但是,我无法使用我所做的许多研究中使用的软件包(epi和roc)。我有pROC软件包。无论如何,是否有使用此软件包绘制图形的图。另外,我还能如何选择最佳阈值?仅使用ROC曲线如何工作?

1 个答案:

答案 0 :(得分:1)

如果使用的是pROC软件包,则第一步是提取曲线的坐标。例如:

library(pROC)
data(aSAH)
myroc <- roc(aSAH$outcome, aSAH$ndka)
mycoords <- coords(myroc, "all")

一旦有了,您就可以绘制任何喜欢的东西。这应该与您的示例有些相似。

plot(mycoords["threshold",], mycoords["specificity",], type="l", 
     col="red", xlab="Cutoff", ylab="Performance")
lines(mycoords["threshold",], mycoords["sensitivity",], type="l", 
      col="blue")
legend(100, 0.4, c("Specificity", "Sensitivity"), 
       col=c("red", "blue"), lty=1)

首先,选择“最佳”切割点与定义最佳切割点一样困难。这在很大程度上取决于上下文和您的应用程序。 常见的快捷方式是使用Youden索引,该索引只是具有max(特异性+敏感性)的临界点。再次使用pROC:

best.coords <- coords(myroc, "best", best.method="youden")
abline(v=best.coords["threshold"], lty=2, col="grey")
abline(h=best.coords["specificity"], lty=2, col="red")
abline(h=best.coords["sensitivity"], lty=2, col="blue")

使用pROC,您可以更改“最佳”阈值的标准。请参阅?coords帮助页面以及best.methodbest.weights参数以获取优化方法。您可能需要查看OptimalCutpoints package,以了解更高级的方法来选择自己的最佳选择。

输出图应如下所示:

enter image description here