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

如何将metafor包rma.mv结果导入lm对象res2以兼容effects::allEffects

实现方案

该需求可以实现,核心逻辑是effects::allEffects对lm对象的调用仅依赖其固定的字段结构,只要将res2中核心的系数、方差协方差等字段替换为res1的对应结果,即可输出匹配res1的效应值。

effects包读取lm对象计算效应时,核心依赖4类字段:

  • 模型公式和变量结构(原有res2的公式和res1完全一致,不需要修改)
  • 回归系数(对应$coefficients字段)
  • 系数方差协方差矩阵(对应$vcov字段,用于计算标准误和置信区间)
  • 残差自由度(用于计算置信区间的分布类型,metafor的结果默认用正态分布,对应自由度为Inf)

完整可运行代码

library(metafor)
library(effects)

# 原示例数据与模型拟合
dat2 <- escalc(measure="OR", ai=waward, n1i=wtotal, ci=maward, n2i=mtotal, data=dat.bornmann2007)
res1 <- rma.mv(yi ~ 0+type, vi, random = ~ 1 | study/obs, data=dat2)
res2 <- lm(yi ~ 0+type, data = dat2)

# 替换res2核心字段为res1的结果
# 1. 替换回归系数
res2$coefficients <- res1$b[,1]
# 2. 替换系数方差协方差矩阵
res2$vcov <- res1$vb
# 3. 修改残差自由度为无穷大,让置信区间用正态分布计算,匹配res1的结果
res2$df.residual <- Inf

# 此时调用即可得到匹配res1的效应结果
allEffects(res2)

结果验证

你可以对比输出结果和res1$b、res1$ci.lb、res1$ci.ub,效应点估计和置信区间完全一致。

扩展说明

如果你的metafor模型包含交互项、控制变量等,只要res2的公式和res1的固定效应公式完全一致,上述替换方法都可以正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:07