使用sjPlot::tab_model()如何将估计值与CI转换为科学计数法?
解决sjPlot::tab_model()中估计值与置信区间的科学计数法格式化问题
由于sjPlot::tab_model()的scientific参数仅控制p值的显示格式,无法直接作用于估计值和置信区间,我们可以通过自定义格式化函数结合est.func和ci.func参数实现需求,该方案支持多模型批量处理。
步骤1:定义科学计数法格式化函数
用sprintf()或format()自定义格式化规则,以下示例保留3位有效数字:
# 自定义格式化函数(保留3位有效数字的科学计数法) sci_format <- function(x) { sprintf("%.3e", x) } # 或使用format函数实现等效效果 # sci_format <- function(x) { # format(x, scientific = TRUE, digits = 3) # }
步骤2:构建多模型并调用tab_model
基于你的示例数据,构建多个混合效应模型后,在tab_model()中指定自定义格式化函数:
library(lme4) library(sjPlot) library(dplyr) # 生成示例数据 ID <- round(runif(30, min = 1, max = 10)) Conc <- runif(30, min = 8.050e+12, max = 8.520e+18) Year <- round(runif(30, min = 2000, max = 2005)) dat <- bind_cols("ID" = ID, "Conc" = Conc, "Year" = Year) # 构建多个混合效应模型 testmod1 <- lmer(Conc ~ Year + (1|ID), data = dat) testmod2 <- lmer(Conc ~ Year + I(Year^2) + (1|ID), data = dat) testmod3 <- lmer(Conc ~ Year + (Year|ID), data = dat) # 生成带科学计数法的出版表格 tab_model(testmod1, testmod2, testmod3, est.func = sci_format, # 格式化估计值 ci.func = sci_format, # 格式化置信区间 p.style = "scientific" # 可选:同时将p值设为科学计数法 )
调整格式细节
- 修改
sprintf("%.3e", x)中的数字3可调整有效数字位数,例如%.2e保留2位,%.4e保留4位。 - 截距项会自动应用相同的格式化规则,无需额外设置。
内容的提问来源于stack exchange,提问作者DeeVee
相关产品推荐
相关产品推荐

