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

如何为modelsummary各回归系数设置不同的自定义数值?

实现每个系数自定义括号内数值的方案

可以通过自定义tidy函数给每个模型的系数添加专属的自定义数值列,再在estimate参数的模板中引用这个列来实现需求。具体步骤如下:

  1. 定义每个回归模型中各系数对应的自定义数值,用列表按模型名分类存储
  2. 编写自定义的tidy函数,将自定义数值匹配到对应模型的系数结果中
  3. 在modelsummary中调用这个自定义tidy函数,并在estimate模板里引用自定义数值列

完整代码示例:

library(fixest)
library(modelsummary)

# 拟合回归模型
reg1 <- feols(mpg ~ cyl , data = mtcars)
reg2 <- feols(mpg ~ cyl + wt , data = mtcars)

# 定义每个系数的自定义数值:按模型名分组,键为系数名
custom_values <- list(
  reg1 = c(cyl = 0.123),
  reg2 = c(cyl = 0.456, wt = 0.789)
)

# 自定义tidy函数:给模型结果添加自定义数值列
custom_tidy <- function(model) {
  # 获取当前模型的名称,匹配custom_values中的分组
  model_name <- deparse(substitute(model))
  # 提取标准的模型统计结果
  tidy_df <- broom::tidy(model)
  # 将自定义数值匹配到对应系数行
  tidy_df$custom_val <- custom_values[[model_name]][tidy_df$term]
  return(tidy_df)
}

# 生成带自定义括号数值的表格
modelsummary(
  list(reg1, reg2),
  fmt = NULL,
  # 在estimate模板中引用自定义数值列
  estimate = "{round(estimate, 3)} [{round(custom_val, 3)}]",
  statistic = "{round(std.error, 3)}",
  coef_omit = "Intercept",
  gof_omit = 'RMSE|AIC|BIC|R2|Std.Errors',
  # 指定使用自定义的tidy函数
  tidy = custom_tidy
)

原理说明

  • modelsummary的estimate和statistic参数支持引用tidy结果数据框中的任意列,只要在模板中用{列名}的格式调用即可
  • 自定义tidy函数的作用是把你预先设置的自定义数值注入到每个模型的系数结果中,确保每个系数能匹配到对应的专属数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:33:10