元分析R程序包 | 综述
元分析R程序包综述
前言
Polanin et al (2017)对元分析相关的R包进行了系统地梳理,并在文中提供了一个完整的元分析示例(包括全部代码),这对于学习元分析极具有参考价值。渤海大学的范会勇老师团队翻译了全文,并授权本公众号转载。本译文的全文见:https://osf.io/wunx6/
英文原文信息:Polanin, J. R., Hennessy, E. A., & Tanner-Smith, E. E. (2017). A Review of Meta-Analysis Packages in R. Journal of Educational and Behavioral Statistics, 42(2), 206-242.
译文内容较长,我们分为如下4个推文,本文为第1个,以下为目录:
1、元分析R程序包综述
2、元分析R程序包分类描述
3、元分析程序包使用指南
4、元分析程序包局限与展望
元分析(meta analysis)是一种分析多篇原始研究(primary)的综合效应值的统计技术。为了估计(estimate)元分析的效应模型,开源(open-source)统计环境(statistics environment)R迅速成为一个受欢迎的选择。元分析社区通过发展多种特定的元分析程序包从而推动了R程序包使用频率的增长。本研究的目的在于找到全部公开的、可获取的R程序包。通过全面的网络搜索,我们搜索到了63个程序包。为了帮助阐明它们在元分析领域的功能,我们对每一类R程序包都进行了描述,同时还为对R程序包感兴趣的研究者推荐了一些应用,提供了两种元分析程序包的简明指导,也为将来R程序包的创建者提供了一些建议。
引言
01
元分析是一种统计技术,这种技术通过综合大量研究的效应值,最终形成一个有意义的估计。与单个原始研究的结果相比,元分析研究提高了结果的普适性、精确度以及跨研究探索异质性的能力(Borenstein, Hedges, Higgins, & Rothstein,2010; Pigott,2012)。事实证明,元分析对政策制定者和实践者非常有用,因为元分析的结果为模棱两可的问题以及大量的研究文献提供了一个答案。因此,在过去30年里,元分析的发表数量呈指数增长(Willianms,2012)。
传统的元分析是通过简单的方差倒数加权平均(inverse-variance-weighted)来估计综合效应值,并没有要求使用复杂的软件或高级计算能力(advance computing power)(Hedges & Olkin,1985)。分析师可以手动或通过普通的电子表格软件相对容易地计算加权平均值。然而,除了最简单的元分析任务外,使用统计软件和预编程序应用是更有效。尤其是在迭代或基于仿真的技术相关的研究中,这种封闭式计算是不可行,或者可能会引入偏差。
这种软件的一个快速增长的市场就是R统计环境。R是一种程序语言,是一种通过复杂的R网络中管理和维护的开源软件(R Core Team,2015)。它已成为许多领域的研究者和数据科学家们的主要选择(Rexer Analytics,2013)。在R中建立元分析软件包也是跟随这种趋势。ChenandPeace’s (2013) 和Schwarzer, Carpenter, and Rücker (2015b)的教科书中描述了许多基于R元分析的程序包,Neupane, Richer, Bonner, Kibret, and Beyene (2014)详细说明了可用于进行网络元分析的R程序包。然而,这些著作中并没有对所有的R程序包进行综合分析。因此,本研究的目的在于阐明可供研究者使用的R元分析程序包,解释两个热门元分析程序包的功能,并为程序包未来的改进提供一些建议。
背景
02
传统的元分析模型通过效应值大小的变异的倒数对效应值进行加权(例如,标准误平方) 来估计平均效应值。这样做会使那些有着大样本量,小变异的研究比那些有着大变异的研究对平均效应量的影响更大,这就是以往提到的固定效应模型(Borenstein et al 2010)。另一种流行的方法是估计随机效应模型,该模型除了通过效应值大小的变异的倒数进行加权外,还考虑到研究之间的差异。可以用以下公式进行表示:
θ表示元分析的平均效应值,Yi表示第i个研究的效应值,Wi*表示第i个研究的随机效应权重。在随机效应模型中,权重用以下公式表示:
Vi第i个研究的效应值的变异(标准误平方),τ2表示研究间方差估计的平方。与固定效应模型相比,随机效应模型预测将会有更大的置信区间,并且每个研究的权重也会变得相似。在估计τ值时,虽然可以使用封闭的计算形式来解决 (DerSimonian & Laird, 1986),但使用迭代最大似然无偏估计会减少偏倚(Veroniki et al., 2016)。热门的元分析R程序包,比如metafor (Viechtbauer, 2015) 或metaSEM (Cheung, 2015) 能够使用无偏估计计算出变异内容。
最近有关元分析方法的进展已经超过了传统的元分析模型,例如,单项研究在同一结果领域内报告多个效应量是很常见的,而在传统元分析假设下,通常每篇研究只会呈现一个效应量,比如研究者根据之前的规则选择一个效应量或简单的对某一研究中的所有效应量进行平均。除此之外,研究者可以用稳健方差估计把所有效应量整合进一个模型当中,充分考虑到研究内协方差对研究结果的影响。虽然之前的多元元分析方法曾提到过(e.g., Gasparrini, 2015),但并不是每个研究的稳健方差估计都需要知道影响效应值大小的研究内协方差分析结构。 Tanner-Smith, Tipton, and Polanin (2016)根据效应值大小之间的相关性提出了两种加权效应值的方法,robumeta软件包(Fisher & Tipton, 2015)也可以估计稳健方差元分析模型。
相似的进展也出现在各种常见的应用问题上。在利用元分析相关矩阵进行结构方程建模上,Cheung(2015)提出了两步建模方法。第一步,综合完整的或近似完整的相关矩阵;第二步,利用第一步中已综合的相关矩阵构建常用的结构方程模型,例如因子分析或潜变量模型。后来Wilson, Polanin和Lipsey等人进一步扩展了这个模型,使它能够适应更复杂的具有多水平相关性的数据集,Cheung(2015)的metaSEM也可以进行元分析结构方程模型建模。另一个进展是通过网络元分析(network Meta-analysis)来使用网络模型,其目的在于同时比较多种干预措施。利用两个研究可以呈现一个简单的网络模型,在研究1中,作者比较了接受干预的A组和没有接受干预的对照组B组;在研究2中,作者比较了研究1中接受干预的A组和另一个接受干预的C组,分析员可以使用网络分析作三个比较(A、B、C),即使在初始研究中这些组并没有进行直接比较。虽然网络元分析在社会科学和教育科学领域应用较少,但在医学领域却很普遍 (Neupane, Richer, Bonner,Kibret, & Beyene, 2014)。
近年来元分析在许多方面取得了很大的进展。接下来我们将通过讨论元分析R程序包来呈现这些进展。首先,我们对如何找到程序包,如何决定它们是否符合标准,如何编码它们的功能等问题提供了一个大致的概览。为了方便理解,我们根据程序包的功能进行了分类,并讨论不同类别的程序包,也为以后的程序员提供了建议。最后我们会对普遍使用的metafor程序包和robumeta程序包作简要指南。
方法
03
为了定位与检索到所有的有元分析功能的R程序包,我们进行了系统且全面的搜索。首先我们检索了warehouse R packages、the Comprehensive R Archive Network website(CRAN)和Revolution Analytics这三个网站,使用的检索词为:meta analysis、meta-analysis、systematic review。除此之外,我们还检索了Git Hub和Google Scholar,并向元分析领域的专家和开发R程序包的程序员请教。搜索结束后,每一个R程序包只呈现了一个作者。不管其整体的关注点、功能或局限,只要该程序包包括任何元分析的功能,都将包含在内。例如,CAMAN (Schlattmann, Hoehne, & Verba, 2015) 程序包最初主要用来产生有限混合模型,而该程序包也可以对P值进行基本的元分析,因此该程序包也被纳入到搜索结果中。
这个过程的目的是总结整个元分析包中可用的功能,并确定应用程序中的任何缺口,以便未来的程序员可以改进这些问题。
接下来,我们从程序包中编码和提取了特征(characteristics) 。 这一过程的目的是总结所有元分析程序包中可用的功能,并说明程序包中存在的缺点,以便于未来程序员可以改进这些问题。我们还为初学者提供了不同程序包的功能说明,因为对初学者来说知道哪些程序包可以提供哪些功能是最重要的。因此,我们编码了一个广泛的程序包特征(可能并不适用于所有的程序包),此外,我们还说明了程序包之间的灵活性和多样性。我们收集的信息包括程序包计算效应值或统计功效的功能、程序包如何处理遗失的信息、如何估计固定效应模型或随机效应模型、程序包是否适用于相关效应值、是否能够进行调节变量分析或敏感性分析(sensitive analysis)、是否能够评价出版偏倚、是否有绘图性能(plotting capacity)。我们还对不同程序包的主要功能进行命名,便于初学者可以迅速找到相应的程序包。一位作者进行了所有的编码,并与研究团队的其他成员定期举行编码会议,以讨论不同作者之间报告程序包功能的方式之间的细微差别。
编码完成后,我们对程序包进行了几次描述性分析。首先,我们对样本进行描述性分析,总结出整个程序包的主要功能,并根据不同的功能将程序包分为9个类别,分别是(1)general meta-analysis packages(2)genome(3)multivariate(4)diagnostic(5)specific(6)network(7)assessment of bias (8)Bayesian(9)graphical user interface(GUI)。其中七类反映了程序包的功能和特征,比如,general meta-analysis程序包执行基本的元分析功能,并覆盖传统元分析的所有功能。另外两类“genome”和“specific”代表了两类不同的程序包。genome程序包只具有基因类元分析功能,这是一个特殊的元分析领域,所以这些程序包一般不用于社会科学和医学这些常用的元分析中。specific程序包主要处理一些目标具有针对性的元分析程序。虽然这些类别是人为主观进行区分的,但它们仍具有启发性和实用性。最后我们使用R程序包计算了每一个程序包的日下载量和月下载量。
对R程序包的首次搜索结束于2015年1月30日,列表更新至2015年7月2日,编码过程结束于2015年9月29日。我们把所有程序包的功能编码在Excel表格中,并使用ggplot2程序包在R程序包中的创建摘要和图表(Wickham, 2009)。我们对编码时使用的R包特定的版本号进行了编码,尽管在编码结束之后可能还有其他程序更新。目前我们使用的所有R程序包为3.1.2版本。
搜索过程中共产生106个程序包。由于重复(n=32)、程序包不支持下载(e.g., RcmdrPlugin.Mac; n= 4)或不符合纳入标准(n=2),我们删除了38个程序包,另外,通过与专业同事的讨论以及之后在会议中呈现的初始研究发现 (Polanin& Hennessy, 2015),又增加了5个程序包,因此,本研究纳入的程序包数量为63。
程序包最早创建于1999年,2012年创建程序包的数量最多。如表1(见附表)所示,这些程序包的功能大同小异,大多数程序包都可以计算效应量(66.7%)、计算固定效应模型(60.3%)或随机效应模型(74.6%),74.6%的程序包都可以制作元分析图表,但多数都依赖于其他少数几个程序包对图表进行渲染。相反,只有少数程序包可以处理缺失值(20.6%)、进行调节变量分析(31.8%)、处理相关效应值(44.4%)以及评价出版偏倚(22.2%)。最后,只有3.17%的程序包可以进行统计功效分析。图2呈现了不同类别的程序包。
表1 程序包的特点
图1 R程序包创建的年份分布
图2 所有R元分析程序包的功能
这些不同的程序包在使用中也有很大差异,2016年3月元分析程序包最高下载量是epiR(Stevenson,2015),平均日下载量高达112.4次(SD=26.06)。根据所有数据显示,平均每个程序包下载量为8.56次(SD=11.19)。然而与其他常用的R程序包相比,元分析程序包的下载量则相对较少。比如,2016年3月使用最普遍的绘图元分析包ggplt22 (Wickham, 2009)日下载量为8467.13次。
翻 译:郭丽萍、乔陆
校 对:范会勇
排 版:赵加伟
Open Science Club
Make psychology open and trustworthy!