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

如何在modelsummary中缩放OLS系数并转换因变量均值为百分比

在modelsummary中实现系数缩放与均值格式化

要实现OLS系数和标准误乘以100(转为百分点变化),同时将因变量均值显示为百分比形式,可通过以下步骤完成:

1. 自定义系数处理函数

使用coef_fun参数定义函数,批量将系数和标准误放大100倍:

coef_scale <- function(model) {
  # 提取模型结果并完成缩放
  tidy_model <- broom::tidy(model)
  tidy_model$estimate <- tidy_model$estimate * 100
  tidy_model$std.error <- tidy_model$std.error * 100
  # 保留所需列
  dplyr::select(tidy_model, term, estimate, std.error)
}

2. 计算并格式化因变量均值

计算因变量均值后转为百分比格式,再通过add_rows参数将其添加到表格中。

3. 完整示例代码

library(modelsummary)
library(dplyr)

set.seed(1)
y <- rbinom(100, 1, 0.5)
x <- rbinom(100, 1, 0.5)
model <- lm(y ~ x)

# 自定义系数缩放函数
coef_scale <- function(model) {
  tidy_model <- broom::tidy(model)
  tidy_model$estimate <- tidy_model$estimate * 100
  tidy_model$std.error <- tidy_model$std.error * 100
  dplyr::select(tidy_model, term, estimate, std.error)
}

# 计算并格式化因变量均值
mean_y <- paste0(round(mean(y) * 100, 1), " %")

# 生成目标表格
modelsummary(model,
             coef_fun = coef_scale,
             fmt = 1, # 统一设置小数位数为1位
             add_rows = tibble(term = "Mean y", `(1)` = mean_y),
             gof_omit = ".*") # 隐藏默认拟合优度统计量

最终输出

运行代码后会得到符合需求的结果:

(1)
(Intercept)     50.0
                (7.4)
x               -3.7
               (10.1)
-------------------------
Mean y          48.2 %

参数说明

  • coef_fun:自定义逻辑处理模型系数,实现缩放需求
  • fmt:统一控制输出的小数位数,保证结果整洁
  • add_rows:手动添加自定义统计行(此处为因变量均值)
  • gof_omit:屏蔽不需要的拟合优度指标,聚焦核心结果

内容的提问来源于stack exchange,提问作者sheß

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:43:20