使用 ROCR 计算最大灵敏度与特异性的截止值
calculate cut-off that max sensitivity vs specificity using ROCR
我正在尝试计算最大灵敏度与特异性的分界点。我正在使用 ROCR 包,我已经设法绘制图形灵敏度与特异性。但是,我不知道如何计算最大灵敏度与特异性的分界点是多少。理想情况下,我希望在图表中有一个标签,显示该点的截止点和坐标。但是,任何解决这个问题的建议将不胜感激。
pred <- prediction( ROCR.simple$hello, ROCR.simple$labels)
ss <- performance(pred, "sens", "spec")
plot(ss)
"Maximize sensitivity vs. specificity" 不是很精确,因为您要在 ROC 曲线上的每个点上权衡这些数量。为了更精确,我假设您正在尝试最大化这两个值的总和。让我们看看你的例子,它使用 ROCR.simple
:
library(ROCR)
data(ROCR.simple)
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
ss <- performance(pred, "sens", "spec")
plot(ss)
您可以通过以下方式确定产生最高灵敏度和特异性的截止值:
ss@alpha.values[[1]][which.max(ss@x.values[[1]]+ss@y.values[[1]])]
# [1] 0.5014893
max(ss@x.values[[1]]+ss@y.values[[1]])
# [1] 1.69993
在这种情况下,当您在预测概率超过 0.501 时预测阳性结果并在预测概率不超过 0.501 时预测阴性结果时,可实现最高的灵敏度和特异性。这产生了 1.7 的灵敏度和特异性值。
当然,这可以通过更改 which.max
调用中的表达式扩展到灵敏度和特异性的其他函数。
我正在尝试计算最大灵敏度与特异性的分界点。我正在使用 ROCR 包,我已经设法绘制图形灵敏度与特异性。但是,我不知道如何计算最大灵敏度与特异性的分界点是多少。理想情况下,我希望在图表中有一个标签,显示该点的截止点和坐标。但是,任何解决这个问题的建议将不胜感激。
pred <- prediction( ROCR.simple$hello, ROCR.simple$labels)
ss <- performance(pred, "sens", "spec")
plot(ss)
"Maximize sensitivity vs. specificity" 不是很精确,因为您要在 ROC 曲线上的每个点上权衡这些数量。为了更精确,我假设您正在尝试最大化这两个值的总和。让我们看看你的例子,它使用 ROCR.simple
:
library(ROCR)
data(ROCR.simple)
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
ss <- performance(pred, "sens", "spec")
plot(ss)
您可以通过以下方式确定产生最高灵敏度和特异性的截止值:
ss@alpha.values[[1]][which.max(ss@x.values[[1]]+ss@y.values[[1]])]
# [1] 0.5014893
max(ss@x.values[[1]]+ss@y.values[[1]])
# [1] 1.69993
在这种情况下,当您在预测概率超过 0.501 时预测阳性结果并在预测概率不超过 0.501 时预测阴性结果时,可实现最高的灵敏度和特异性。这产生了 1.7 的灵敏度和特异性值。
当然,这可以通过更改 which.max
调用中的表达式扩展到灵敏度和特异性的其他函数。