You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:25:28