2

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

作为截止值函数的灵敏度和特异性图

但是我不能使用在我所做的许多研究中使用的包(epi 和 roc)。我确实有包 pROC。反正有没有使用这个包来绘制图表。另外我还能如何选择最佳阈值?仅使用 ROC 曲线如何工作?

4

1 回答 1

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)

选择“最佳”切割点与首先定义最佳切割点一样困难。这在很大程度上取决于上下文和您的应用程序。一个常见的捷径是使用约登指数,它只是具有最大值(特异性 + 灵敏度)的截止点。再次使用 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 包,了解更高级的方法来选择您自己的最优值。

输出图应如下所示:

在此处输入图像描述

于 2018-12-20T17:40:45.320 回答