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

如何聚合rms::ols()多模型汇总结果并保留截距估计值

基于rms::ols分组拟合并保留截距的汇总方法

1. 让模型汇总显示截距

rms::ols的默认汇总输出会隐藏截距项,这是因为summary.rms函数的intercept参数默认值为FALSE。只需调用summary时显式设置intercept = TRUE,就能看到截距的估计值:

foo %>%
  {map(.$model, ~ summary(.x, intercept = TRUE))}

2. 聚合所有模型的系数结果到统一数据框

如果需要把各分组模型的系数(含截距)、标准误、p值等信息整理成结构化的数据框,有两种简便方法:

方法一:用broom包快速提取(推荐)

broom包的tidy()函数对rms模型支持良好,默认会包含截距项,还能一键生成置信区间:

library(broom)
library(tidyr)

foo %>%
  mutate(coef_details = map(model, ~ tidy(.x, conf.int = TRUE))) %>%
  unnest(coef_details) %>%
  select(cyl, term, estimate, std.error, p.value, conf.low, conf.high)

方法二:手动提取模型系数矩阵

如果不想依赖额外包,可以直接从ols模型对象中提取含截距的汇总表,再整理成数据框:

library(tibble)
library(tidyr)

foo %>%
  mutate(coef_table = map(model, ~ {
    # 获取含截距的系数汇总
    sum_result <- summary(.x, intercept = TRUE)$coef
    # 转换为数据框并添加变量名
    as.data.frame(sum_result) %>%
      rownames_to_column("term")
  })) %>%
  unnest(coef_table) %>%
  select(cyl, term, Estimate, SE, `t value`, `Pr(>|t|)`)

以上两种方法均基于rms::ols完成模型拟合,既能保留截距估计值,也能实现多模型结果的结构化聚合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:13:13