如何用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
相关产品推荐
相关产品推荐

