在Metafor packlage

时间:2015-12-14 15:24:30

标签: r

R的新手并尝试使用Metafor软件包进行元分析,但在发布偏差分析方面苦苦挣扎。

我正在尝试分析Metafor包中的发表偏倚,以进行分析(rma.mv模型),其中包括系统发育控制(来自系统发育树的距离矩阵)。 Nakagawa和Santos 2012建议在修剪和填充分析或Egger回归中使用系统模型的残差。我理解这个原则,但是在执行它时遇到了问题。这就是我所做的:

ES_Calc <- rma.mv(yi=yi, V=vi, random= ~1|PhyloName, R=list(PhyloName=PhyCor),Rscale="cov0", data=ES)  #this model works well! ES is a dataframe with columns for the effect size yi, variance, vi, and species name PhyloName. PhyCor is a distance matrix between all species.

Resid <- rstandard(ES_Calc)  #I recover residuals, se, z, slab with 110 datapoints each

这是我遇到问题的方法。 Egger的回归(regtest)和修剪和填充(trimfill)都需要输入元分析(rma.uni输出),因此我可以想到两个选项并且不确定哪个是对的: 1)以某种方式将Residuals输出转换为类似于rma.uni的格式 - 但我不知道如何做到这一点。有人知道吗?

2)将Residuals输出转换为数据帧(它是一个列表,但我需要一个数据帧来运行rma分析):

Resid_DF<-do.call("rbind", Resid)
Resid_DF22 <- t(Resid_DF)

然后在残差数据上运行rma.uni并运行trimfill或regtest:

resid.es <- rma(yi=resid, vi=se, data=Resid_DF2)
trimfill(resid.es, estimator="R0")
regtest(resid.es)

但在第二种选择中,我完全不相信这种方法是正确的。

1 个答案:

答案 0 :(得分:0)

我相信您可以使用残差和原始效应大小差异简单地运行Egger回归。

eg.reg1 = lm(residuals.rma(ES_Calc)~data.frame$vi)

其中data.frame $ vi是数据集的原始效果大小差异。通过使用rma.mv对象中的残差,可以解释模型中随机效应项所解释的异质性。