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

在tidymodels工作流中如何对coxph()模型输出执行Augment()操作?

问题解答

原因说明

这不是语法错误,是broom包针对不同模型类的augment方法设计差异导致的:

  • lm类的拟合对象默认会存储训练用的数据集副本,因此augment.lm可以自动提取数据计算观测级拟合指标,无需额外传参
  • coxph类的拟合对象出于内存占用优化的考虑,不会存储原始训练数据,因此调用augment.coxph时必须显式传入data或newdata参数指定用于计算拟合值的数据集。

解决方案

不需要修改原有逻辑,只需要将仅遍历fit列的map改为同时遍历fit和对应分组训练集data的map2,显式给augment传入数据参数即可。

完整可运行代码

# 需提前加载依赖包:survival、tidyverse、broom
ex_model <- lung %>% 
    nest(data = -sex) %>%
    mutate(
        fit = map(data, ~ coxph(Surv(time, status) ~ age + wt.loss + meal.cal, data = .)),
        glance = map(fit, glance),
        tidy = map(fit, tidy),
        # 同时传入模型对象和对应分组数据集
        augment = map2(fit, data, ~ augment(x = .x, data = .y))
    ) %>% 
    glimpse()

运行后生成的augment列会存储每个分组下所有观测的原始数据+对应cox模型拟合指标,和你用lm得到的输出结构一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:18:01