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

如何用gtsummary实现多结局回归的协变量调整?

解决gtsummary多结局调整回归的标签显示与批量实现问题

一、给堆叠的回归表添加结局变量标签

你手动拟合模型后用tbl_stack合并时,默认不会显示每个子表对应的结局变量,只需利用tbl_stack的group_header参数,为每个子表指定结局标签即可:

library(gtsummary)
library(dplyr)

# 模拟示例数据(替换为你的实际数据)
df <- mtcars %>%
  mutate(
    trt = factor(cyl, labels = c("对照组", "治疗组1", "治疗组2")),
    age = disp,
    response = factor(am, labels = c("无应答", "应答")),
    death = factor(vs, labels = c("死亡", "存活"))
  )

# 拟合两个调整age的回归模型
model_response <- glm(response ~ trt + age, data = df, family = binomial)
model_death <- glm(death ~ trt + age, data = df, family = binomial)

# 转换为gtsummary表格并堆叠,添加结局标签
tbl_combined <- tbl_stack(
  list(
    tbl_regression(model_response, exponentiate = TRUE),
    tbl_regression(model_death, exponentiate = TRUE)
  ),
  # 为每个结局指定显示标签
  group_header = c("**结局:应答(无应答/应答)**", "**结局:死亡(死亡/存活)**")
)

# 查看结果
tbl_combined

二、更简便的批量实现方法

无需手动逐个拟合模型,可利用purrr包的批量映射功能,一次性处理所有结局变量:

library(purrr)

# 定义要分析的结局变量及对应标签
outcome_vars <- c("response", "death")
outcome_labels <- c("结局:应答(无应答/应答)", "结局:死亡(死亡/存活)")

# 批量拟合模型并生成gtsummary表格
tbl_list <- map2(outcome_vars, outcome_labels, function(var, label) {
  # 动态构建公式
  glm_formula <- as.formula(paste(var, "~ trt + age"))
  # 拟合模型并转换为表格
  glm(glm_formula, data = df, family = binomial) %>%
    tbl_regression(exponentiate = TRUE)
})

# 堆叠表格并添加结局标签
tbl_combined_batch <- tbl_stack(tbl_list, group_header = outcome_labels)

# 查看结果
tbl_combined_batch

补充说明

  • 如果需要对结局变量的标签做更精细的调整,可在tbl_regression中结合modify_table_header修改表头,或用modify_caption添加表格说明,但group_header是区分不同结局最直观的方式。
  • 若你的结局变量是连续型,只需去掉family = binomial参数,根据需求调整exponentiate选项(连续型回归一般设为FALSE)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:30:07