You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在手动构建的ROC曲线上确定最优诊断切点?

手动ROC曲线的最优切点寻找方法

我已计算出10个不同诊断指标(含zero参考点)对应的真阳性率(TPR)和假阳性率(FPR),并用ggplot绘制了手动构建的ROC散点图(仅展示TPR vs FPR)。现需找到这些点中的最优切点,且不想通过构建多条ROC曲线的方式(该方式仅能得到单一诊断截断值的Youden指数或AUC)。

数据与绘图代码

数据定义

Metric <- c("zero", "CORNER", "DOL", "GE", "K", "M", "F", "H", "L", "G")
FPR <- c(0, 0.11, 0.26, 0.07, 0.5, 0.07, 0.26, 0.05, 0.29, 0.03)
TPR <- c(0, 0.5, 0.9, 0.6, 0.9, 0.5, 0.9, 0.8, 0.9, 0.8)
FinalTable <- data.frame(Metric, FPR, TPR)

基础绘图代码

ggplot(FinalTable, aes(FPR, TPR)) + 
  geom_point()

示例图

ROC散点图示例

最优切点寻找方法

直接通过**Youden指数(Youden's J = TPR - FPR)**筛选最优切点即可,该指数能综合衡量诊断的真阳性与假阳性表现,值越大诊断效能越好。

具体操作

  • 计算每个指标的Youden指数:
FinalTable$Youden_J <- FinalTable$TPR - FinalTable$FPR
  • 筛选Youden指数最大的切点:
optimal_cut <- FinalTable[which.max(FinalTable$Youden_J), ]
print(optimal_cut)

运行后会输出最优切点对应的指标、FPR、TPR及Youden指数。

  • 在ROC图中标注最优切点:
library(ggplot2)

ggplot(FinalTable, aes(FPR, TPR)) + 
  geom_point(size = 2) +
  # 用红色大点标记最优切点
  geom_point(data = optimal_cut, aes(FPR, TPR), color = "red", size = 3) +
  # 添加切点标注文本
  geom_text(data = optimal_cut, aes(label = paste(Metric, "\nJ=", round(Youden_J, 2))), 
            vjust = -1, color = "red") +
  labs(x = "假阳性率(FPR)", y = "真阳性率(TPR)", title = "ROC散点图与最优切点") +
  theme_bw()

结果说明

对当前数据计算后,指标G的Youden指数为0.77(0.8-0.03),是所有点中最高的,因此G对应的点即为最优切点。

内容的提问来源于stack exchange,提问作者JamesLancaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:05:24