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

R语言ROC分析阈值异常?求解阈值计算与解读问题

ROC曲线阈值与原变量范围不符的问题解答

核心问题:误解了ROC阈值的定义

你看到的阈值不是原变量DOKU_INDEXWERT的取值,而是逻辑回归输出的事件发生预测概率(也就是glm.fit$fitted.values的取值,范围0-1),这是正常现象,并非计算错误。

具体解释

  • 逻辑回归的拟合结果fitted.values是每个样本对应ENTLASSMANAGEMENT_BIN=1的概率,范围0到1。ROC曲线的本质是遍历这个概率的所有可能截断点,计算对应的灵敏度和特异度,因此阈值自然是概率值,和原自变量DOKU_INDEXWERT的1-41范围完全无关。
  • 出现-Inf是ROC计算的标准起始点:当阈值设为负无穷时,所有样本都会被判定为阳性,此时灵敏度100%、特异度0%,对应ROC曲线的左下角起点。

如何得到原变量DOKU_INDEXWERT的截断值

如果需要对应到原变量的分界点,可以把预测概率阈值反向映射回DOKU_INDEXWERT的取值(逻辑回归的预测概率和DOKU_INDEXWERT呈单调关系,因此可以对应):

# 合并原变量、预测概率和实际标签
pred_df <- data.frame(
  doku = data_sub$DOKU_INDEXWERT,
  prob = glm.fit$fitted.values,
  actual = data_sub$ENTLASSMANAGEMENT_BIN
)
# 按预测概率排序
pred_df_sorted <- pred_df[order(pred_df$prob), ]

# 选择最优概率阈值(以Youden指数为例)
youden_idx <- which.max(roc.info$sensitivities + roc.info$specificities - 1)
optimal_prob <- roc.info$thresholds[youden_idx]

# 找到对应的DOKU_INDEXWERT截断值:取预测概率>=最优阈值的最小DOKU值
optimal_doku_cutoff <- min(pred_df_sorted$doku[pred_df_sorted$prob >= optimal_prob])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:05:24