如何使用sjPlot等包为拟合模型统计量迭代生成规范输出表格
多混合效应模型批量输出标准化结果表实现方案
依赖包准备
首先确保安装并加载所需工具包,推荐优先使用sjPlot包,完美适配lmerModLmerTest类模型输出:
# 首次使用先安装 install.packages(c("sjPlot", "lmerTest", "sjlabelled", "sjmisc")) # 加载包 library(sjPlot)
核心实现逻辑
sjPlot内置的tab_model()函数可以直接识别lmerTest拟合的混合效应模型,支持自定义输出字段、样式,可直接匹配你需要的标准化统计结果表格样式。
单模型测试(先验证输出样式是否符合要求)
先取第一个模型测试调整参数:
tab_model( # 传入模型对象 model_list[[1]], # 核心样式参数 show.std = TRUE, # 输出标准化系数 show.ci = FALSE, # 不需要置信区间可设为FALSE,需要则设为0.95 show.se = TRUE, # 显示标准误 show.stat = TRUE, # 显示t检验统计量 show.df = TRUE, # 显示 Sattherthwaite 法计算的自由度 p.style = "stars", # 显著性用星号标注 p.threshold = c(0.1, 0.05, 0.01, 0.001), # 对应显著性标记规则:. * ** *** digits = 3, # 系数、标准误等保留3位小数 digits.p = 3, # p值保留3位小数 show.re.var = TRUE, # 输出随机效应方差结果 show.obs = TRUE, # 输出总观测数、分组数 # 自定义文本 dv.labels = "你的因变量名称", # 替换为该模型实际因变量名 title = "模型1 线性混合效应模型回归结果" )
运行后会在RStudio的Viewer面板生成可视化表格,可直接复制到Word/PPT中使用。
批量输出13个模型的单独表格
用循环遍历model_list即可实现每个模型单独输出,同时支持批量导出为本地文件:
for (i in seq_along(model_list)) { # 自定义每个表格的标题、因变量标签 tab_title <- paste0("模型", i, " 线性混合效应模型回归结果") dv_name <- paste0("因变量", i) # 可替换为你提前整理好的各模型因变量名向量 # 生成结果表 res_tab <- tab_model( model_list[[i]], show.std = TRUE, show.ci = FALSE, show.se = TRUE, show.stat = TRUE, show.df = TRUE, p.style = "stars", p.threshold = c(0.1, 0.05, 0.01, 0.001), digits = 3, digits.p = 3, show.re.var = TRUE, show.obs = TRUE, dv.labels = dv_name, title = tab_title ) # 在Viewer面板依次输出 print(res_tab) # 可选:导出为单独HTML文件,打开后可直接全量复制到Word保留格式 save_path <- paste0("模型", i, "_回归结果表.html") save_html(res_tab, file = save_path) }
备选方案(gtsummary包)
如果习惯用gtsummary包,也可以用如下逻辑实现,自定义灵活度更高:
install.packages("gtsummary") library(gtsummary) # 单模型示例,批量输出可套入上述循环 model_list[[1]] |> tbl_regression( exponentiate = FALSE, pvalue_fun = ~style_pvalue(.x, digits = 3) ) |> add_glance_table(include = c(nobs, AIC, BIC)) |> # 加入模型拟合指标 modify_header( label ~ "变量名", estimate ~ "回归系数", std.error ~ "标准误", p.value ~ "p值" ) |> modify_caption(paste0("模型", i, " 线性混合效应模型回归结果"))
内容的提问来源于stack exchange,提问作者12666727b9
相关产品推荐
相关产品推荐

