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

求助:modelsummary()无法展示跨回归调整后的p值

解决modelsummary跨模型调整p值不显示的问题

直接修改lm_robust模型对象的$p.value属性无法让modelsummary识别,因为modelsummary默认通过broom::tidy()提取统计量,而tidy.lm_robust会从模型内部的计算结果重新生成p值,不会读取你手动修改的$p.value。

要实现跨多个回归调整p值并在modelsummary中显示,需使用statistic_override参数手动传入调整后的p值,具体代码如下:

library(modelsummary)
library(estimatr)

d <- data.frame(x=c(1,2,31,1,3),y=c(35,6,32,2,2),w=c(15,42,361,1,33),z=c(35,6,32,24,24))

g1 <- lm_robust(x~y,d)
g2 <- lm_robust(w~z,d)

# 收集所有模型的原始p值,进行跨模型FDR调整
raw_p <- c(g1$p.value, g2$p.value)
adj_p <- p.adjust(raw_p, method = "fdr")

# 构建statistic_override要求的命名列表
# 命名规则:"模型序号_系数名",模型从1开始计数
override_names <- c(
  paste0("1_", names(g1$p.value)),
  paste0("2_", names(g2$p.value))
)
adj_p_override <- setNames(adj_p, override_names)

# 生成包含调整后p值的模型汇总表
modelsummary(
  models = list(g1, g2),
  statistic = "p.value",
  statistic_override = adj_p_override
)

说明

  • statistic_override参数接受一个命名列表,键的格式为"模型编号_系数名",对应每个模型的每个系数;值为你想要替换的统计量数值。
  • 运行上述代码后,汇总表会显示跨模型调整后的p值,而非原始p值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:01:08