如何用tbl_uvregression展示multgee包多分类GEE模型的单变量分析结果?
用gtsummary展示multgee多分类GEE单变量分析结果
完全可以参照多分类logistic回归的方案实现需求,核心是为multgee包的nomLORgee模型添加gtsummary支持,同时通过数据预处理或函数参数去除NA值,以下是具体实现步骤:
1. 核心准备:为nomLORgee模型添加gtsummary兼容
gtsummary依赖broom包的tidy()方法提取模型结果,但默认没有适配nomLORgee的实现,需要自定义一个tidy函数来解析多分类GEE的输出:
library(multgee) library(gtsummary) library(dplyr) library(tidyr) # 自定义适配nomLORgee的tidy方法 tidy.nomLORgee <- function(x, exponentiate = FALSE, ...) { coef_df <- as.data.frame(summary(x)$coefficients) %>% tibble::rownames_to_column(var = "term") %>% tidyr::separate(term, into = c("response_level", "predictor"), sep = ":", extra = "merge") %>% rename( estimate = Estimate, std.error = `Std.err`, statistic = `Wald`, p.value = `Pr(>|W|)` ) # 指数化系数(输出OR值,可选) if (exponentiate) { coef_df <- coef_df %>% mutate(estimate = exp(estimate)) } return(coef_df) }
2. 处理NA值
可以在数据预处理阶段直接去除含NA的观测,确保单变量分析时不会因为缺失值报错:
# 加载示例数据并清洗NA data(housing) housing_clean <- housing %>% select(y, time, sec, id) %>% # 筛选需要分析的变量 na.omit() # 去除所有含NA的行
也可以在调用tbl_uvregression时,通过method.args = list(na.action = na.omit)将去NA的逻辑传递给nomLORgee函数。
3. 运行单变量分析并生成表格
参照多分类logistic的宽格式方案,用tbl_uvregression批量运行单变量多分类GEE,并调整表格布局:
# 生成单变量多分类GEE结果表格 tbl_uv <- tbl_uvregression( data = housing_clean, method = nomLORgee, y = y, # 多分类结局变量 method.args = list(id = id, repeated = time), # GEE必需的聚类和重复测量参数 exponentiate = TRUE, # 输出优势比(OR) label = list( time ~ "时间点", sec ~ "社会经济阶层" ) ) %>% # 将结果按结局水平转为宽格式 modify_table_body( ~ .x %>% tidyr::pivot_wider( id_cols = c(variable, label, row_type), names_from = response_level, values_from = c(estimate, std.error, p.value), names_glue = "{response_level}_{.value}" ) ) %>% # 自定义表头,清晰区分不同结局水平 modify_header( starts_with("1_") ~ "**参考水平: 1**", starts_with("2_") ~ "**结局: 2**", starts_with("3_") ~ "**结局: 3**" ) %>% bold_labels() # 加粗变量标签 # 查看最终表格 tbl_uv
关键说明
- 自定义的
tidy.nomLORgee函数是实现兼容的核心,它会自动提取多分类结局每个水平的系数、标准误和P值; - 宽格式转换让不同结局水平的结果并列展示,和多分类logistic的表格风格一致;
- 无论是预处理去NA还是通过模型参数去NA,都能确保单变量分析时不会包含缺失值观测。
内容的提问来源于stack exchange,提问作者s.stats
相关产品推荐
相关产品推荐

