如何在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ß
相关产品推荐
相关产品推荐

