求助: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
相关产品推荐
相关产品推荐

