首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Metafor包中修剪rma.mv模型

在Metafor包中修剪rma.mv模型
EN

Stack Overflow用户
提问于 2015-12-14 23:24:30
回答 1查看 832关注 0票数 0

R的新手,并试图使用Metafor包运行metanalysis,但正在与出版物偏差分析作斗争。

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

代码语言:javascript
复制
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

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

2)将残差输出转换为dataframe (它是一个列表,但我需要一个dataframe来运行rma分析):

代码语言:javascript
复制
Resid_DF<-do.call("rbind", Resid)
Resid_DF22 <- t(Resid_DF)

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

代码语言:javascript
复制
resid.es <- rma(yi=resid, vi=se, data=Resid_DF2)
trimfill(resid.es, estimator="R0")
regtest(resid.es)

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

EN

回答 1

Stack Overflow用户

发布于 2016-01-01 00:42:17

我相信你可以简单地使用残差和原始效果大小方差来运行Egger回归。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34270651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档