森林图技术问询:需加权合并估计,单个研究展示未加权原始置信区间
解决方法:加权合并估计 + 单个研究原始置信区间展示
你遇到的问题核心是混淆了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
相关产品推荐
相关产品推荐

