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

基于Tidymodels生成校准图的方法咨询

用Tidymodels绘制逻辑回归模型的校准图

要绘制预测值与观测值的校准图,核心是对比分组后的平均预测概率和实际事件发生比例,用tidyverse工具就能轻松实现,步骤如下:

  • 生成预测概率数据
    从训练好的模型对象中导出概率预测,和原始观测的响应变量合并:

    # 替换成你的模型对象、测试集、响应变量名和目标类别
    preds <- predict(model_fit, test_data, type = "prob") %>%
      bind_cols(test_data %>% select(response_var))
    
  • 计算校准分组统计量
    将预测概率分成若干分位数组(比如10组),计算每组的平均预测概率、实际事件比例和样本量:

    library(dplyr)
    
    calibration_data <- preds %>%
      # 按预测概率分10组,替换成你的预测概率列名(比如.pred_positive)
      mutate(prob_bin = cut(.pred_positive, breaks = 10, labels = FALSE)) %>%
      group_by(prob_bin) %>%
      summarise(
        mean_pred_prob = mean(.pred_positive),
        # 替换成响应变量的目标取值,比如response_var == "1"
        mean_actual_rate = mean(response_var == "1"),
        group_size = n()
      ) %>%
      ungroup()
    
  • 绘制校准图
    用ggplot2绘制,添加理想校准线(斜率1、截距0):

    library(ggplot2)
    
    ggplot(calibration_data, aes(x = mean_pred_prob, y = mean_actual_rate)) +
      geom_point(aes(size = group_size), alpha = 0.7) +
      geom_abline(slope = 1, intercept = 0, color = "firebrick", linetype = "dashed") +
      labs(
        x = "平均预测概率",
        y = "实际事件发生比例",
        title = "逻辑回归模型校准图",
        size = "分组样本量"
      ) +
      theme_minimal()
    

如果用了交叉验证,建议合并所有折叠的预测值来计算校准统计,结果更稳健:

# 替换成你的交叉验证结果对象
cv_preds <- collect_predictions(resampled_fit, summarize = FALSE) %>%
  bind_cols(map_dfr(resampled_fit$splits, ~ analysis(.x) %>% select(response_var)))

# 之后重复上述分组统计和绘图步骤即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:15:40