发表偏倚
回顾前面的章节,我们发现已经涵盖了大量的元分析技术。我们不仅学习了如何合并效应量,现在也知道如何评估我们发现的稳健性,检查异质性模式,以及检验效应差异的原因的假设。
所有这些方法都可以帮助我们从元分析中得出有效的结论。然而,这基于一个关于我们数据性质的未明确的假设,我们尚未对此提出质疑。在进行元分析时,我们认为收集的数据是全面的,或者至少是具有代表性的,代表了所考察的研究领域。
回到第 @ref(study-search) 章,我们提到元分析通常试图包括所有可用的证据,以便得出一个能够充分描述研究领域的单一效应量。从统计学的角度来看,我们或许可以容忍分析中缺失一些研究——但前提是这些研究是偶然“遗漏”的。
不幸的是,元分析往往无法包括所有现有的证据。更糟糕的是,我们也有充分的理由认为,我们收集的数据中,一些研究的缺失并非完全是“随机的”。我们的世界并不完美,管理科学实践的激励机制和“规则”也是如此。这意味着存在一些系统性的偏倚,可以决定一项研究是否最终出现在我们的元分析中。
这个问题的很好例子可以在一个不太近期的药物治疗研究轶事中找到。早在 20 世纪 90 年代,人们就普遍认为抗抑郁药物(如选择性血清素再摄取抑制剂,或 SSRIs)在治疗抑郁症患者方面是有效的。大部分证据来自已发表的药物治疗试验的元分析,在这些试验中,将抗抑郁药与安慰剂药丸进行比较。考虑到抗抑郁药物市场价值数十亿美元,并且还在稳步增长,关于抗抑郁药物效果的问题是一个重要的问题。
这可能有助于理解欧文·基尔施(Irving Kirsch)及其同事撰写的一篇文章《皇帝的新药》[-@kirsch2002emperor]引起的骚动,该文章认为情况可能并非那么乐观。
基尔施及其同事根据“信息自由法案”,获得了制药公司向美国食品和药物管理局提供的先前未发表的抗抑郁药试验数据。他们发现,当也考虑到这些未发表的数据时,与安慰剂相比,抗抑郁药的益处充其量是微乎其微的,在临床上可以忽略不计。基尔施及其同事认为,这是因为公司只发表了具有有利结果的研究,而具有“令人失望”证据的研究则被隐瞒了 [@kirschemperorbook]。
一场激烈的辩论随之而来,基尔施的说法至今仍存在争议。我们选择这个例子不是为了站队,而是为了说明缺失研究可能对元分析推论的有效性构成的潜在威胁。在元分析文献中,此类问题通常概括为发表偏倚。
发表偏倚问题强调了元分析中的每一项发现都只能与其所依据的数据一样好。元分析技术只能处理手头的数据。因此,如果收集的数据被扭曲,即使是最好的统计模型也只会重现固有的偏倚。也许你还记得我们在本书的开头已经讨论过这个基本警告,当时我们讨论了“抽屉文件”问题(参见第 @ref(pitfalls) 章)。实际上,“抽屉文件问题”和“发表偏倚”这两个术语经常互换使用。
发表偏倚及相关问题对元分析结果的影响可能是巨大的。它可能导致我们高估治疗效果、忽视负面副作用,或强化对实际上无效的理论的信念。
因此,在本章中,我们将讨论发表偏倚可以通过哪些不同的形式和方式来扭曲我们的发现。我们还将了解一些元分析师可以用来检查我们数据中发表偏倚风险的方法;以及如何首先减轻发表偏倚。
什么是发表偏倚?
当一项研究的发表概率受到其结果的影响时,就存在发表偏倚 [@duval2005publication,第 2 章和第 5 章]。有大量证据表明,如果一项研究的发现具有统计学意义,或者证实了最初的假设,那么它更有可能进入公众视野 [@schmucker2014extent; @scherer2018full; @chan2014increasing; @dechartres2018association]。
在搜索符合条件的研究时,我们通常仅限于以某种形式公开的证据,例如通过同行评审的文章、预印本、书籍或其他类型的可访问报告。在存在发表偏倚的情况下,这不仅意味着我们的数据集中缺少一些研究——这也意味着缺失的研究很可能是那些具有不利发现的研究。
元分析技术使我们能够找到人群中平均效应量的无偏估计。但是,如果我们的样本本身被扭曲,那么即使从统计学角度来看是“真实”的效应估计也不会代表现实。这就像试图估计冰山的大小,但只测量它的尖端:我们的发现不可避免地会出错,即使我们能够以完美的精度测量水面以上的高度。
发表偏倚实际上只是众多非报告偏倚之一。还有其他几个因素也会扭曲我们在元分析中获得的证据 [@page2020investigating],包括:
引用偏倚:即使已发表,具有负面或不确定结果的研究也不太可能被相关文献引用。这使得例如通过参考文献搜索更难检测到它们。
时滞偏倚:具有积极结果的研究通常比具有不利结果的研究发表得更早。这意味着最近进行的具有积极结果的研究的发现通常已经可用,而那些具有不显着结果的研究则不可用。
多次发表偏倚:“成功”研究的结果更有可能在多篇期刊文章中报告,这使得至少找到其中一篇更容易。“香肠切片”也称为跨多篇文章报告研究发现的做法。
语言偏倚:在大多数学科中,发表证据的主要语言是英语。以其他语言发表的出版物不太可能被检测到,尤其是当研究人员自己无法在不翻译的情况下理解内容时。如果英语研究与以其他语言发表的研究系统性地不同,这也会引入偏倚。
结果报告偏倚:许多研究,尤其是临床试验,测量不止一个感兴趣的结果。一些研究人员利用这一点,只报告那些获得积极结果的结果,而那些未证实假设的结果则被删除。这也可能导致偏倚:从技术上讲,该研究已经发表,但其(不利的)结果仍将在我们的元分析中缺失,因为它未被报告。
非报告偏倚可以被视为系统性因素,使我们更难以找到现有的证据。但是,即使我们能够包括所有相关的发现,我们的结果可能仍然存在缺陷。由于研究人员在分析和报告他们的发现时应用了可疑的研究实践 (QRP),因此也可能存在偏倚 [@simonsohn2020specification]。
我们之前已经提到了“研究人员的自由度”的概念(第 @ref(pitfalls) 章)。QRP 可以定义为研究人员滥用这些自由度将结果“弯曲”到所需方向的做法。不幸的是,对于什么是 QRP 尚无明确的共识。但是,有一些常见的建议示例。
最突出的 QRP 之一是 p 值操纵,其中调整分析直到达到 \(p<\) 0.05 的传统显着性阈值。这可以包括删除异常值的方式、亚组分析或缺失数据处理。
另一个 QRP 是 HARKing [@kerr1998harking],它代表 在结果已知后提出假设。HARKing 的一种方法是假装探索性分析中的发现一直是该研究的先验假设。例如,研究人员可以在数据集上运行各种测试,然后围绕所有显着的测试“发明”假设。这是一种严重错误的方,会增加研究的错误发现率,从而增加虚假发现的风险(仅举几个问题)。另一种类型的 HARKing 是删除所有数据不支持的假设,这最终可能导致结果报告偏倚。
在元分析中解决发表偏倚
很明显,发表偏倚、其他报告偏倚和 QRP 可能会对我们元分析的有效性产生强烈和有害的影响。它们构成了主要的挑战,因为通常实际上不可能知道偏倚的确切大小——或者它是否根本存在。
在元分析中,我们可以应用一些技术,这些技术可以在一定程度上降低由于发表和报告偏倚以及 QRP 造成的扭曲的风险。其中一些方法与研究搜索有关,而另一些是统计方法。
研究搜索。在第 @ref(study-search) 章中,我们讨论了搜索符合条件的研究的过程。如果存在发表偏倚,则此步骤非常重要,因为这意味着对已发表文献的搜索可能会产生不能完全代表所有证据的数据。我们可以通过搜索灰色文献来抵消这一点,其中包括论文、预印本、政府报告或会议记录。幸运的是,预注册在许多学科中也变得越来越普遍。这使得可以搜索研究注册表,例如 ICTRP 或 OSF 注册表(参见第 @ref(study-search) 章中的表 @ref(tab:bibdatabases)),以查找具有未发表数据的研究,并询问作者是否可以向我们提供尚未公开的数据1。灰色文献搜索可能既乏味又令人沮丧,但值得付出努力。一项大型研究发现,纳入灰色和未发表的文献可以帮助避免高估真实效应 [@mcauley2000does]。
统计方法。也可以通过统计程序检查发表的存在。这些方法都不能直接识别发表偏倚,但它们可以检查我们数据的某些属性,这些属性可能表明存在发表偏倚。当校正发表偏倚时,一些方法也可以用于量化真实的总体效应。
在本章中,我们将展示评估和控制发表偏倚的常用统计方法。我们首先介绍侧重于小型研究效应的方法 [@sterne2000publication; @schwarzer2015meta,第 5 章;@duval2005publication,第 5 章]。这些方法的一个共同点是通过查看研究的精度和观察到的效应量之间的关系来查找发表偏倚的指标。
小型研究效应方法
有各种小型研究效应方法来评估和校正元分析中的发表偏倚。多年来,许多技术一直沿用至今。正如其名称所说,这些方法特别关注小型研究。从统计学角度来看,这转化为具有较高标准误差的研究。小型研究效应方法假定小型研究更有可能成为发表偏倚的牺牲品。
该假设基于三个核心思想 [参见 @borenstein2011introduction,第 30 章]:
由于它们涉及大量资源和时间投入,因此大型研究很可能会发表,无论结果是否具有统计学意义。
中等规模的研究更有可能不被发表。但是,即使统计功效仅为中等,通常也足以产生显着结果。这意味着只有一些研究不会被发表,因为它们提供了“不受欢迎”(即不显着)的结果。
小型研究产生不显着结果的风险最高,因此仍然留在“抽屉文件”中。在小型研究中,只有非常大的效应才会变得显着。这意味着只有具有非常高效应量的小型研究才会被发表。
我们看到这些假设背后的所谓机制非常简单。本质上,它表示存在发表偏倚,因为只有显着效应才会发表。由于获得显着结果的概率随着样本量的增加而增加,因此发表偏倚将不成比例地影响小型研究。
漏斗图
在本指南的前面(第 @ref(what-is-es) 章),我们了解到研究的样本量和标准误差密切相关。效应量较大的标准误差会导致置信区间较宽,并增加效应不具有统计学意义的可能性。因此,假设小型研究效应将在很大程度上影响具有较大标准误差的研究是合理的。
假设我们收集的数据受到发表偏倚的影响。如果是这种情况,我们可以假设具有较大标准误差的研究的效应量高于具有较小标准误差的研究。这是因为效应较小的小型研究不显着,因此从未考虑发表。因此,我们从未将它们纳入我们的元分析中。
通常通过漏斗图检查小型研究效应。漏斗图是一个散点图,其中研究的观察到的效应量在 x 轴上,并以其标准误差的度量为 y 轴。通常,漏斗图中的 y 轴是倒置的(意味着 y 轴上的“较高”值表示较低标准误差)。
当没有发表偏倚时,此类图中的数据点应形成大致对称的倒漏斗。这就是为什么它们被称为漏斗图。该图顶部(标准误差较低的那些)的研究应紧密地排列在一起,并且离合并效应量不远。在该图的下部,随着标准误差的增加,漏斗“打开”,并且预期效应量会更严重地散布在合并效应的左右两侧。
当我们回想起我们在第 @ref(what-is-es) 章中学到的关于效应量的行为时,以及在第 @ref(fem) 章中讨论固定效应模型时(图 @ref(fig:funnel1)),更容易看到为什么研究应该形成漏斗。标准误差表明研究的精度:随着标准误差的降低,我们期望观察到的效应量越来越好地估计真实效应量。当标准误差较高时,效应量具有较低的精度,因此更有可能与人群中的实际效应相差甚远。
我们现在将通过生成我们自己的漏斗图来使这更加具体。在 {meta} 包中,可以使用 meta::funnel
2 函数来为元分析对象打印漏斗图。在这里,我们为我们的 m.gen
元分析对象生成一个漏斗图。我们指定了两个进一步的参数 xlim
和 studlab
。第一个控制图中 x 轴的限制,而第二个告诉函数包括研究标签。运行 meta::funnel
后调用 title
函数会将标题添加到图中。
我们的代码如下所示:
```{r, message=F, fig.width=8, fig.height=6, out.width=“85%”, collapse = TRUE, results=‘hold’, fig.align=‘center’, eval = F} # 加载“meta”包 library(meta)
# 生成漏斗图 meta::funnel(m.gen, xlim = c(-0.5, 2), studlab = TRUE)
# 添加标题 title(“漏斗图(第三代心理疗法)”)
```
```{r, message=F, fig.width=8, fig.height=6, out.width=“85%”, collapse = TRUE, results=‘hold’, fig.align=‘center’, echo=F} # 加载“meta”包 library(meta)
par(bg=“#FFFEFA”) # 生成漏斗图 meta::funnel(m.gen, xlim = c(-0.5, 2), studlab = TRUE)
# 添加标题 title(“漏斗图(第三代心理疗法)”)
```
如所讨论的,生成的漏斗图显示了每项研究的效应量(表示为标准化平均差)在 x 轴上,以及标准误差(从大到小)在 y 轴上。为了便于解释,该图还包括我们期望我们的研究遵循的理想化漏斗形状。漏斗中间的垂直线显示了平均效应量。因为我们在生成 m.gen
时使用了随机效应模型,所以漏斗图也使用了随机效应估计。
在不存在小型研究效应的情况下,我们的研究应大致遵循该图表中描绘的漏斗形状。在我们的例子中是这样吗?好吧,并非如此。虽然我们看到标准误差较低的研究更集中地位于估计的真实效应附近,但总体模式看起来不对称。这是因为在该图右下角有三项效应量非常高的小型研究(Shapiro、Kang 和 Danitz-Orsillo 的研究)。
然而,这些研究在该图的左下角没有等效的研究。没有效应非常低或负面的小型研究来“平衡”那些效应非常高的研究。另一个令人担忧的细节是,我们样本中精度最高的 de Vibe 的研究似乎也没有很好地遵循漏斗模式。它的效应量比预期的要小得多。
总体而言,数据集在漏斗图中显示出不对称的模式,这可能表明存在发表偏倚。可能是这三项小型研究很幸运地发现了足够高的效应,从而变得显着,但在未发表的研究中,存在一个具有类似标准误差的底层,但效应更小且因此不显着,没有通过筛选。
检查不对称模式如何与统计学显着性相关的一个好方法是生成轮廓增强漏斗图 [@peters2008contour]。此类图可以帮助区分发表偏倚和其他形式的不对称。轮廓增强漏斗图包括颜色,这些颜色表示图中每项研究的显着性水平。在 meta::funnel
函数中,可以通过将所需的显着性阈值提供给 contour
参数来添加轮廓。通常,这些阈值为 0.9
、0.95
和 0.99
,分别等于 \(p\) < 0.1、0.05 和 0.01。使用 col.contour
参数,我们还可以指定轮廓应具有的颜色。最后,之后可以使用 legend
函数将图例添加到图中,指定不同颜色的含义。我们可以使用 x
和 y
参数将图例放置在图上,在 legend
中提供标签,并使用 fill
参数添加填充颜色。
这会产生以下代码:
```{r, fig.width=8, fig.height=6, out.width=“82%”, collapse=TRUE, fig.align=‘center’, eval=F} # 定义轮廓的填充颜色 col.contour = c(“gray75”, “gray85”, “gray95”)
# 生成漏斗图(我们在此处不包括研究标签) meta::funnel(m.gen, xlim = c(-0.5, 2), contour = c(0.9, 0.95, 0.99), col.contour = col.contour)
# 添加图例 legend(x = 1.6, y = 0.01, legend = c(“p < 0.1”, “p < 0.05”, “p < 0.01”), fill = col.contour)
# 添加标题 title(“轮廓增强漏斗图(第三代心理疗法)”)
```
```{r, fig.width=8, fig.height=6, out.width=“75%”, collapse=TRUE, fig.align=‘center’, echo=F} # 定义轮廓的填充颜色 col.contour = c(“gray75”, “gray85”, “gray95”)
par(bg=“#FFFEFA”) # 生成漏斗图(我们在此处不包括研究标签) meta::funnel(m.gen, xlim = c(-0.5, 2), contour = c(0.9, 0.95, 0.99), col.contour = col.contour)
# 添加图例 legend(x = 1.6, y = 0.01, legend = c(“p < 0.1”, “p < 0.05”, “p < 0.01”), fill = col.contour)
# 添加标题 title(“轮廓增强漏斗图(第三代心理疗法)”)
```
我们看到漏斗图现在包含三个阴影区域。我们特别关注 \(p<\) 0.05 和 \(p<\) 0.01 区域,因为落入该区域的效应量传统上被认为是显着的。
添加轮廓区域是有启发性的:它表明这三项小型研究都具有显着效应,尽管具有较大的标准误差。只有一项具有类似标准误差的研究不显着。如果我们在图的左下角“估算”缺失的研究以增加对称性,这些研究将位于该图的不显着区域中;或者它们实际上会产生显着的负面影响。
较大研究的模式看起来略有不同。我们看到有几项研究的 \(p>\) 0.05,并且效应的分布不太倾斜。尽管如此,可能存在问题的是,除了一个研究之外,所有研究都非常接近显着性阈值(即,它们位于 0.1 \(> p >\) 0.05 区域中)。这些研究可能只是在原始论文中以不同的方式计算了效应量,这导致了显着的结果。或者,也许发现趋势水平上显着的效应已经足以使该研究发表。
总之,对轮廓增强漏斗图的检查证实了我们最初的直觉,即漏斗图中存在不对称,这可能是由发表偏倚引起的。但是,至关重要的是不要妄下结论,并谨慎地解释漏斗图。我们必须牢记,发表偏倚只是漏斗图不对称的众多可能原因之一。
```{block, type=‘boxinfo’} 漏斗图不对称的替代解释
虽然发表偏倚会导致不对称的漏斗图,但也有其他更“良性”的原因可能会产生类似的模式 [@page2020investigating]:
- 不对称也可能由研究间的异质性引起。漏斗图假定效应量的分散是由研究的抽样误差引起的,但不控制研究可能是不同真实效应的估计量这一事实。
- 小型研究中的研究程序可能有所不同,这导致了更高的效应。例如,在临床研究中,当样本量较小时,更容易确保每个参与者都按预期接受治疗。大型研究可能并非如此,导致治疗保真度较低,从而导致较低的效应。检查纳入研究的特征以评估这种替代解释是否合理是有意义的。
- 一个常见的发现是,低质量的研究往往会显示出更大的效应量,因为存在更高的偏倚风险。大型研究需要更多的投资,因此它们的方法论也可能更严格。即使没有发表偏倚,这也可能导致漏斗图不对称。
- 最后,完全有可能漏斗图不对称仅仅是偶然发生的。
```
我们看到,仅通过查看(轮廓增强)漏斗图的视觉检查就已经可以为我们提供一些“危险信号”,表明我们的结果可能受到发表偏倚的影响。
但是,仅通过查看来解释漏斗图显然也有其局限性。当我们的结果“过于不对称”时,没有明确的规则,这意味着来自漏斗图的推论总是有些主观。因此,以定量方式评估漏斗图不对称的存在是有帮助的。这通常通过 Egger 的回归检验来实现,我们将在接下来讨论。
Egger 的回归检验
Egger 的回归检验 [@egger1997bias] 是一种常用的定量方法,用于检验漏斗图中的不对称。与漏斗图的视觉检查一样,它只能识别小型研究效应,而不能直接告诉我们是否存在发表偏倚。该检验基于一个简单的线性回归模型,其公式如下所示:
\[\begin{equation} \frac{\hat\theta_k}{SE_{\hat\theta_k}} = \beta_0 + \beta_1 \frac{1}{SE_{\hat\theta_k}} (\#eq:pub1) \end{equation}\]
此公式中的响应 \(y\) 是我们的元分析中观察到的效应量 \(\hat\theta_k\),除以其标准误差。生成的值等效于 \(z\) 分数。这些分数直接告诉我们效应量是否显着;当 \(z \geq\) 1.96 或 \(\leq\) -1.96 时,我们知道该效应是显着的 (\(p<\) 0.05)。此响应根据研究的标准误差的倒数进行回归,该倒数等效于它们的精度。
但是,当使用 Egger 的检验时,我们对回归权重 \(\beta_1\) 的大小和显着性不感兴趣,而是对截距 \(\beta_0\) 感兴趣。为了评估漏斗不对称,我们检查 \(\hat\beta_0\) 的大小,以及它是否与零显着不同。当这种情况发生时,Egger 的检验表明漏斗图不对称。
让我们花点时间来理解为什么回归截距的大小告诉我们一些关于漏斗图不对称的信息。在每个线性回归模型中,截距表示当所有其他预测变量为零时 \(y\) 的值。我们模型中的预测变量是研究的精度,因此截距显示了当精度为零时(即当研究的标准误差无限大时)预期的 \(z\) 分数。
当没有发表偏倚时,预期的 \(z\) 分数应分散在零附近。这是因为具有极其大的标准误差的研究具有极其大的置信区间,使得几乎不可能达到 \(|z| \geq\) 1.96 的值。但是,当漏斗图不对称时,例如由于发表偏倚,我们期望具有非常高效应量的小型研究在我们数据中将被过度表示,从而导致数量惊人的低精度研究,\(z\) 值大于或等于 1.96。由于这种扭曲,零精度 \(y\) 的预测值将远大于零,从而导致显着的截距。
下图说明了漏斗图不对称对 Egger 检验的回归斜率和截距的影响。
```{r eggers_alt, echo=F, out.width=“50%”, message=F, warning=F, fig.width=6, fig.height=5, eval=F} library(ggplot2)
load(“data/m.egdat.rda”) load(“data/m.egdat.bias.rda”)
meta::funnel(m.egdat, xlab = “Effect Size”) title(“漏斗图(无不对称)”)
m.egdat$data %>%> mutate(y = .TE/.seTE, x = 1/.seTE) %>%> ggplot(aes(y = y, x = x)) + xlim(c(0, 110)) + #ylim(c(0, 110)) + geom_point(fill = “grey”, pch=21) + geom_smooth(method = “lm”, se = F, fullrange = T, color = “black”) + theme_minimal() + ylab(“缩放效应量 (z)”) + xlab(“标准误差的倒数(精度)”) + annotate(“text”, x = 3, y = 33, label = bquote(hat(beta)[0]“=”0.21), hjust = “left”, cex = 6) + annotate(geom = “curve”, x = 0, y = 0.21, xend = 5, yend = 30, curvature = .3, arrow = arrow(length = unit(2, “mm”)), linetype = “dashed”) + ggtitle(“回归线(无不对称)”) + theme(plot.title = element_text(color=“black”, size=14, face=“bold”, hjust = 0.5), plot.margin = margin(1.08, 1, 1.08, 1, “cm”), plot.background = element_rect(fill = “#FFFEFA”, color = “#fbfbfb”), panel.background = element_rect(fill = “#FFFEFA”)) # ‘nearly-white’ used to keep knitr from cropping
meta::funnel(m.egdat.bias, xlab = “Effect Size”) title(“漏斗图(不对称)”)
m.egdat.bias$data %>%> mutate(y = .TE/.seTE, x = 1/.seTE) %>%> ggplot(aes(y = y, x = x)) + xlim(c(0, 9)) + ylim(c(0,6)) + geom_point(fill = “grey”, pch=21) + geom_smooth(method = “lm”, se = F, fullrange = T, color = “black”) + theme_minimal() + ylab(“缩放效应量 (z)”) + xlab(“标准误差的倒数(精度)”) + annotate(“text”, x = 0.8, y = 0.5, label = bquote(hat(beta)[0]“=”2.85), hjust = “left”, cex = 6) + annotate(geom = “curve”, x = 0, y = 2.85, xend = 0.7, yend = 0.7, curvature = .3, arrow = arrow(length = unit(2, “mm”)), linetype = “dashed”) + ggtitle(“回归线(不对称)”) + theme(plot.title = element_text(color=“black”, size=14, face=“bold”, hjust = 0.5), plot.margin = margin(1.08, 1, 1.08, 1, “cm”), plot.background = element_rect(fill = “#feffff”, color = “#fbfbfb”), panel.background = element_rect(fill = “#feffff”)) # ‘nearly-white’ used to keep knitr from cropping
```
```{r eggers, echo=F, out.width=“50%”, message=F, warning=F, fig.width=6, fig.height=5} library(OpenImageR) knitr::include_graphics(‘images/eggers-1_sep.png’) knitr::include_graphics(‘images/eggers-2_sep.png’) knitr::include_graphics(‘images/eggers-3_sep.png’) knitr::include_graphics(‘images/eggers-4_sep.png’) ```
让我们看看当我们对 m.gen
中的数据拟合这样的回归模型时会得到什么结果。使用 R,我们可以提取 m.gen
中的原始数据来计算响应 y
和我们的预测变量 x
。在下面的代码中,我们使用管道(第 @ref(data-transform) 章)和 mutate
函数来执行此操作,该函数是 {tidyverse} 的一部分。之后,我们使用线性模型函数 lm
将 \(z\) 分数 y
回归到精度 x
上。在管道的最后一部分中,我们请求结果的 summary
。
```{r, eval = F} # 加载所需的包 library(tidyverse)
m.gen$data %>%> mutate(y = TE/seTE, x = 1/seTE) %>%> lm(y ~ x, data = .) %>%> summary()
```
## [...]
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.1111 0.8790 4.677 0.000252 ***
## x -0.3407 0.1837 -1.855 0.082140 .
## ---
## Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
##
## [...]
在结果中,我们看到我们的回归模型的截距为 \(\hat\beta_0\) = 4.11。这远大于零 (\(t\) = 4.677, \(p<\) 0.001),并且表明漏斗图中的数据确实不对称。总体而言,这证实了我们最初的发现,即存在小型研究效应。但是,重申一下,不确定这种模式是否是由发表偏倚引起的。
执行 Egger 截距检验的更便捷方法是使用 {meta} 中的 metabias
函数。此函数仅需要元分析对象作为输入,并且我们必须将 method.bias
参数设置为 "linreg"
。如果我们将该函数应用于 m.gen
,我们会得到与之前相同的结果。
```{r} metabias(m.gen, method.bias = “linreg”) ```
```{block2, type=‘boxreport’} 报告 Egger 检验的结果
对于 Egger 检验,通常足以报告截距的值、其 95% 置信区间,以及 \(t\) 值和 \(p\) 值。在 {dmetar} 包中,我们包含了一个名为 eggers.test
的便捷函数。此函数是 metabias
的包装器,并以适合报告的格式提供 Egger 检验的结果。如果您没有安装 {dmetar},您可以在 在线 找到该函数的源代码。这是一个例子:
eggers.test(m.gen)
\(~\) | 截距 |
置信区间 |
t |
p |
---|---|---|---|---|
Egger 检验 |
4.111 |
2.347-5.875 |
4.677 |
0.00025 |
```
m.gen
中使用的效应量度量是小样本偏倚校正的 SMD(Hedges’ \(g\))。有人认为,在 SMD 上运行 Egger 检验可能导致假阳性结果膨胀 [@pustejovsky2019testing]。这是因为研究的标准化平均差和标准误差不是独立的。
我们可以通过查看用于计算组间 SMD 标准误差的公式(公式 3.18,第 @ref(b-group-smd) 章)轻松地看到这一点。此公式包括 SMD 本身,这意味着研究的标准误差会随着观察到的效应的大小而变化(即 SMD 与其标准误差之间存在人为的相关性)。
Pustejovsky 和 Rodgers [-@pustejovsky2019testing] 建议在检验标准化平均差的漏斗图不对称时使用标准误差的修改版本。仅使用标准误差公式的第一部分,这意味着观察到的效应量会从等式中删除。因此,该公式如下所示:
\[\begin{equation} SE^*_{\text{SMD}_{\text{between}}}= \sqrt{\frac{n_1+n_2}{n_1n_2}} (\#eq:pub2) \end{equation}\]
其中 $SE^*_{\text{SMD