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

森林图技术问询:需加权合并估计,单个研究展示未加权原始置信区间

解决方法:加权合并估计 + 单个研究原始置信区间展示

你遇到的问题核心是混淆了rma()函数中weighted参数的作用:这个参数控制的是合并估计是否采用加权计算,而非单个研究置信区间的展示方式。当设置weighted=FALSE时,合并结果变成未加权,但模型会自动计算单个研究的加权点估计,导致森林图里的CI不符合需求。

正确的实现思路是拆分两步处理:先生成加权的合并估计结果,再基于原始数据绘制单个研究的原始CI,最后把加权合并结果添加到图中。

步骤1:生成加权合并估计模型

先运行正常的加权随机效应模型,得到你需要的加权合并结果:

# 运行加权的REML模型,默认weighted=TRUE,无需额外设置
res_weighted <- rma(lnhr, sei=se, data=dffc, method="REML", test="knha")

步骤2:绘制森林图(原始CI + 加权合并)

调用forest()时,直接传入原始数据的效应量(yi)和标准误(sei)来绘制单个研究的原始置信区间,再通过addfit参数把加权合并的结果添加到图中:

par(mar = c(6, 6, 3, 3))
forest(yi = dffc$lnhr, sei = dffc$se, 
       addfit = res_weighted,  # 添加加权合并的估计结果
       addpred = FALSE, annotate= TRUE, at=seq(0,8,by=1),  
       order= dffc$exo,
       showweights=TRUE,  # 显示合并时使用的加权权重
       ilab=cbind(dffc$expo, dffc$com), ilab.xpos=c(-3, -1.5), mlab = "", xlab= " ",
       cex=1.1, xlim=c(8, 4), alim = c(-6, 6),  
       transf=transf.exp.int,
       refline=1,
       slab=paste(dffc$author)
)

关键说明

  • 单个研究的置信区间:通过直接传入原始的lnhr和se,森林图会绘制每个研究的原始未加权置信区间,完全符合你的需求。
  • 合并估计:addfit=res_weighted会把之前生成的加权合并结果(包括合并效应量和对应的CI)添加到森林图底部,实现加权合并的展示。
  • 权重显示:showweights=TRUE展示的是加权合并时使用的权重,和合并模型一致。

内容的提问来源于stack exchange,提问作者Dr. Md Shariful Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:25:12