如何解决gtsummary中tbl_continuous处理连续变量的结果异常问题
解决gtsummary中连续变量关联分析的表格需求
问题本质
tbl_continuous()的设计目标是汇总连续变量在分组变量中的分布特征,哪怕传入连续变量作为by=参数,它也会自动将其分箱转换为因子(默认按分位数分组),因此输出的是分组比较的p值,而非变量间线性关联的R²。要得到包含Characteristic、R2、p-value的表格,需要换用回归模型配合gtsummary的工具实现。
具体实现步骤
1. 单变量线性回归(单个连续变量与目标变量的关联)
适用于查看每个连续自变量和目标连续变量(如ttdeath)的单独关联:
library(gtsummary) library(dplyr) library(purrr) # 构造可重复的模拟数据(替换为你的真实数据) set.seed(123) df <- tibble( ttdeath = rnorm(100, mean = 50, sd = 10), age = rnorm(100, mean = 60, sd = 8), bmi = rnorm(100, mean = 25, sd = 3) ) # 批量生成每个自变量的单变量回归结果表格 single_var_results <- df %>% select(-ttdeath) %>% names() %>% map(function(var) { # 拟合单变量线性回归 fit <- lm(as.formula(paste0("ttdeath ~ ", var)), data = df) # 提取模型结果并添加R² fit %>% tbl_regression(include = -intercept) %>% add_glance_table(include = r.squared) %>% # 调整表格结构,保留需要的列 modify_table_body( mutate, Characteristic = !!var, R2 = sprintf("%.3f", r.squared), p.value = p.value ) %>% select(Characteristic, R2, p.value) }) %>% # 合并所有单变量结果 tbl_merge(tab_spanner = NULL) # 输出表格 single_var_results
2. 多变量线性回归(多个连续变量与目标变量的联合关联)
如果需要查看多元模型的整体R²和显著性:
# 拟合多变量线性回归 multi_fit <- lm(ttdeath ~ age + bmi, data = df) # 生成包含模型汇总的表格 multi_var_results <- multi_fit %>% tbl_regression() %>% # 添加模型整体的R²和p值 add_glance_table(include = c(r.squared, p.value)) %>% # 在表格顶部添加模型汇总行 modify_table_body( add_row, Characteristic = "Model Summary", R2 = sprintf("%.3f", glance(multi_fit)$r.squared), p.value = glance(multi_fit)$p.value, .before = 1 ) %>% select(Characteristic, R2, p.value) # 输出表格 multi_var_results
关键说明
tbl_continuous()不适合做变量间的关联分析,仅用于描述性统计汇总;- 用
lm()拟合线性回归后,通过tbl_regression()提取系数结果,add_glance_table()获取模型的R²等整体指标,再通过modify_table_body()调整表格列和内容,就能得到你需要的格式。
内容的提问来源于stack exchange,提问作者mickmars51
相关产品推荐
相关产品推荐

