具有多种响应措施的研究的荟萃分析

机器算法验证 r 荟萃分析
2022-03-27 05:53:39

我正在尝试对一堆鸟类回放研究进行元分析。感谢上一篇文章的帮助,我相当确定我需要使用逆方差加权(可能使用 R 中的“元”包)。

这些回放研究使用不同的响应措施,但有一些重叠。一些研究使用 10 种应对措施,而另一些研究使用一种。我有每项研究的响应措施的均值和标准误。我想看看,在所有鸟类中,这些反应措施是否随着我对每只鸟的另一个变量而增加。

我不确定从这里去哪里。在每项研究中平均平均值和标准误差似乎并不合适。我对“元”包也不是非常熟悉,也无法在网上找到详细说明如何使用这样的数据进行元分析的资源。我的下一步应该是什么?

3个回答

我将尝试解决您问题的几个不同组成部分

您似乎认为您想对某些鸟类相关变量的均值进行元分析,但在阅读之后...

我想看看,在所有鸟类中,这些反应措施是否随着我对每只鸟的另一个变量而增加

相反,您似乎对元分析真正感兴趣的是相关性在与鸟类相关的变量和您已确定的其他一些变量之间(可能会查看鸟类之间的差异)。元分析相关性肯定比元分析方法更典型,尽管后者当然是可能的——您几乎可以对任何具有相应方差或标准误差的统计数据进行元分析。事实上,如果您想对变量之间的相关性进行元分析,那么在每项研究中记录一个变量的均值和标准误将无济于事。相反,您将希望收集您感兴趣的变量之间的相关性,以及每个相关性的样本大小,因为您将使用样本大小来计算每个相关性的标准误差和/或方差。

一旦你有了这些信息,你似乎会遇到另一个问题:效果大小的依赖性。在许多方面,元分析只是一种花哨的加权回归,许多相同的假设都适用——包括假设所有观察都是独立的。正如你所指出的......

一些研究使用 10 种应对措施,而另一些研究使用一种

..您似乎可能会有一些研究有助于多重相关性,因此会违反这个假设。虽然这听起来很吓人(尤其是如果您以前没有进行过元分析),但您可以使用 3 级元分析的方法(使用多级结构方程模型)来解释这种依赖性;这很容易使用 Cheung 的metaSEM包来完成(它的语法与其他元分析包R非常相似)。metafor实际上,metaSEM允许您指定与效应大小(您的相关性)嵌套方式相对应的聚类变量,因此您可以为每个研究分配一个 ID 号,并将其用作您的聚类变量。

综合起来,根据您的描述,您似乎对至少两个模型感兴趣:

模型 1:一个“仅拦截”模型,您可以据此估计两个感兴趣的鸟类相关变量之间的元分析平均相关性。

模型 2:一个模型,您可以通过该模型测试这种相关性是否/如何被其他一些变量(例如,鸟类的类型、使用的结果测量类型等)调节。

每个模型的相应metaSEM代码如下。在假设的示例中,您将使用一个名为“mydata”的数据框,其中包含名为“ID”、“corrs”、“corrs_v”、“bird_type”和“measure_type”的列,对应于您为每个分配的 ID #研究,研究的相关性,每个相关性的方差(metaSEM也允许您指定标准误差),鸟类的类型和结果测量的类型。

#Install and call metaSEM package
install.packages("metaSEM")
library(metaSEM)

#Fit Model 1-Intercept-only
model.1=meta3(y = corrs, v = corrs_v, cluster = ID, data = mydata, model.name = "Intercept-only")
summary(model.1)

#Fit Model 2a-Moderation by Bird Type
model.2a=meta3(y = corrs, v = corrs_v, cluster = ID, data = mydata, x = cbind(bird_type), model.name = "Moderation by Bird Type")
summary(model.2a)

#Fit Model 2b-Moderation by Outcome Measure Type
model.2a=meta3(y = corrs, v = corrs_v, cluster = ID, data = mydata, x = cbind(measure_type), model.name = "Moderation by Outcome Measure Type")
summary(model.2a)

3 级元分析方法 (and metaSEM) 的好处在于,您将获得通常从随机效应模型 (例如 ) 中获得的效应大小变异性的描述性统计数据,除了针对每个聚类级别进行细分(即,每个级别的一个用于研究内的变异性,一个用于研究间的变异性)。然后,对于您的调节模型,您还可以从每个级别的聚类中获得的好处,因此您可以了解您的主持人在每个级别解释的效果大小差异有多大。τ2I2R2

因此,总而言之,收集您对元分析实际感兴趣的效应量(听起来您对均值感兴趣,而是某种相关性)及其相应的样本量(这样您就可以计算标准相关性的误差或方差;任何介绍性的荟萃分析文本都会有这些公式)。然后,一旦您输入了所有这些信息,您就可以对一个 ID 变量进行编码,该变量对应于哪个相关性来自哪个研究,并使用它metaSEM来估计您的元分析模型,同时适当地考虑来自的效应大小之间的依赖关系同样的研究。

这应该足以让您入门;如果您还有其他问题,或者如果我误解了某些内容,请评论此回复,我可以根据需要对其进行编辑。

我认为您需要使用 metafor 包并查看函数 rma.mv 及其文档。也值得看看他的网站有很多例子。也许您想尝试然后再问一次?作者确实在 Cross Validated 上发帖,但尝试在 R-help 邮件列表上发帖可能也是值得的。抱歉,我在这里不能说得太具体,但这是我专业知识的限制。

这里似乎停顿了一下,所以我将尝试利用您提供的额外信息来扩展我的答案。我将建议如何使用metaforrma.mv功能来做到这一点。

我假设您将所有变量都放在 data.frame 中,并且我已经给了它们我希望下面是显而易见的名称。

您首先指定fit <- rma.mv(yi = outcome, V = se^2,

您需要指定随机效果,我认为根据您的描述将是random = ~ responsetype | study您需要确保 responsetype 是一个因素或字符变量。

您现在需要指定您的调节变量,mods = ~ beaklength + responsetype假设响应类型中的研究之间有足够的重叠,否则您只能在此处使用 beaklength。

我建议设置slab = paste(study, responsetype)为在您的森林图中获得良好的标签。我还强烈建议使用profile对象上的函数来检查是否合适。使用这种模型,有时您的数据集中没有足够的信息来识别参数。作为生物学家,您可能会对 Nakagaw 和 Santos 的这篇题为“生物荟萃分析中的方法学问题和进展”的文章感兴趣,该文章给出了一些理论。我想我是从其中一位作者的网站上下载了我的副本,以防您无法访问该期刊。

您可以使用标准均值差来汇集不同的尺度。进一步阅读检查: 'metaanalysis with r' 一本书由包'meta' pg 25 的作者写

然而,在许多情况下,不同的研究使用不同的结果量表,例如不同的抑郁量表或生活质量量表。在这种情况下,我们不能直接汇集效应估计(平均差)。相反,我们从每项研究中计算出一个无量纲效应度量,并将其用于汇集。一种非常流行的无量纲效应测量是标准化平均差,它是研究的平均差除以基于单个治疗组或两个治疗组的标准差。

然后他使用了这个命令

#Ne,Nc sample size for both intervention,control,Me,Se for mean and standard deviation for each group, SMD for standardized mean difference
mc2 <- metacont(Ne, Me, Se, Nc, Mc, Sc, sm="SMD",
+ data=data2)

要获得结果,请使用 summary(mc2)、forest(mc2)