Skip to content

3.8 元分析 ​

本节目标

读完本节后,你能判断什么时候适合做元分析,整理“研究—效应量”的数据表,选择固定效应或随机效应模型,读懂合并效应与异质性,并把检索、编码、分析和敏感性检查留成可复核的记录。

你遇到的是什么问题? ​

心理学文献常会出现这样的情境:五项实验都比较“社会排斥对助人行为的影响”,方向大致相同,但样本、量表和效应大小不同。逐篇引用只能说“多数研究发现……”,不能回答总体效应大约有多大、研究之间为何不同。元分析把每项研究转换为同一尺度的效应量,并按其不确定性加权合并。

它适用于有明确纳入标准、可提取相互独立效应量的研究集合;不适用于只有一篇研究、研究问题和结局完全不可比,或把同一参与者/样本的多个高度相关结果当成独立研究的情形。元分析不是“文献数量越多越客观”,检索遗漏、选择性报告和编码错误都会传递到结果。

最短决策路径 ​

  1. 先定问题与估计对象。 写清人群、干预/暴露、比较、结局和时间点(PICO/PECO),再决定估计均值差、标准化均值差、相关系数或对数优势比。
  2. 确认观测单位。 一行通常是一项研究中的一个效应量;同一研究多个时间点、结局或对照组会产生相关行,不能默认独立。
  3. 检查可比性。 量表方向、效应量正负号、样本重叠、干预剂量和研究设计是否允许合并?不能只因“都叫焦虑”就合并。
  4. 预先写分析计划。 固定/随机效应、异质性估计量、调节变量、异常值和发表偏倚检查应在看到结果前记录。

从论文到分析表:逐步操作 ​

1. 建立可追溯的检索与筛选记录 ​

记录数据库、检索式、日期、去重规则、排除理由和两名编码者的分歧裁决。PRISMA 2020 流程图能帮助报告筛选过程,但它不替你判断效应量是否可比。

2. 为每个效应量编码 ​

至少保留这些列:

列例子为什么需要
study_id、effect_idS07、S07_T2区分研究与同一研究的多个结果
n_treat、n_ctrl80、78检查权重与小样本修正
effect、se 或 vi0.35、0.14合并所需的效应和不确定性
outcome、time帮助行为、1 周预先定义的亚组/调节变量
direction_rule高分=更多助人保证正负号含义一致
source_page、tablep. 6、Table 2回到原文核对

均值差(MD)保留原量表单位;量表不同但构念相近时可用标准化均值差(SMD,如 Hedges' g);二分类结局常用风险比(RR)或优势比(OR)。效应量选择应服从研究问题和可解释性,而不是追求“显著”。

3. 处理依赖与缺失 ​

同一研究报告多个结局时,先选一个预先定义的主要结局,或使用多层/多变量元分析;不要挑最大的一个。共享对照组的多个比较也会重复计算样本量。缺少标准误时,回到原文或联系作者;由 p 值、区间反推时记录公式和假设,不能把“未报告”默认为 0。

固定效应还是随机效应? ​

固定效应模型假定所有研究共享一个真实效应,差异只来自抽样误差;它回答“在这组研究及其权重下的共同效应”。随机效应模型允许研究间存在真实效应差异,回答“从相似研究集合推广时,平均真实效应在哪里”。随机效应并不自动更保守,也不能修复发表偏倚或极端异质性。

在随机效应模型中,常见权重为 wi=1/(vi+τ2),其中 vi=SEi2,τ2 是研究间方差。报告使用的 τ2 估计方法(如 REML 或 Paule–Mandel)和小样本区间方法;不同软件的默认值可能不同。I2 可描述总变异中归因于研究间差异的比例,但它不是“异质性检验的通过/失败阈值”。

一个可运行的教学示例(模拟数据) ​

下面四行是模拟的标准化均差及其标准误,不是任何真实论文的结果。研究问题是假设“排斥操纵相对控制条件对助人行为的影响”。代码只用 Node.js 的基础运算复核固定效应、DerSimonian–Laird 的 τ2 和随机效应合并;正式项目应使用 R 的 metafor、Python 的 statsmodels 等成熟实现,并报告软件版本。

javascript
// Node.js 18+;教学示例,四项研究的效应量和 SE 是手工模拟的
const y = [0.20, 0.35, 0.10, 0.50];
const se = [0.10, 0.14, 0.12, 0.16];
const v = se.map(x => x ** 2);
const w = v.map(x => 1 / x);
const sum = a => a.reduce((x, z) => x + z, 0);
const fixed = sum(w.map((z, i) => z * y[i])) / sum(w);
const Q = sum(w.map((z, i) => z * (y[i] - fixed) ** 2));
const df = y.length - 1;
const C = sum(w) - sum(w.map(z => z ** 2)) / sum(w);
const tau2 = Math.max(0, (Q - df) / C); // DL 估计;不是唯一选择
const wr = v.map(x => 1 / (x + tau2));
const random = sum(wr.map((z, i) => z * y[i])) / sum(wr);
const randomSE = Math.sqrt(1 / sum(wr));
const ci = [random - 1.96 * randomSE, random + 1.96 * randomSE];
const I2 = Math.max(0, (Q - df) / Q);
console.log({ fixed, Q, tau2, random, ci, I2 });

本段代码实际运行后的四舍五入结果为:固定效应 μ^=0.248;Q=4.763(df=3);τ2=0.0095;随机效应 μ^=0.261,95% CI [0.104, 0.418];I2=37.0%。这些数值只用于演示“权重和异质性如何影响合并”,不能写成真实研究发现。随机效应的近似 95% 预测区间约为 [0.014, 0.508],提示相似新研究的真实效应可能接近零,也可能更大。

阅读顺序应是:先看各研究点估计和区间,再看合并效应;随后检查 Q、I2、τ2 和预测区间,最后才讨论调节变量。区间跨过 0 不是“没有任何效应”的证明,而是当前资料对方向或大小仍不够确定。

调节变量、发表偏倚与稳健性 ​

  • 亚组/元回归: 例如比较实验室与在线研究、短期与一周后测量。调节变量应有理论依据;元回归系数是研究层面的关联,不等于个体层面的因果交互。
  • 影响与敏感性: 逐一删除、改变效应量选择、改变 τ2 估计或相关系数假设,检查结论是否改变。不要只删除“让结果不显著”的研究。
  • 发表偏倚: 漏斗图不对称可能来自小样本效应、真实异质性或选择性报告;Egger 检验在研究很少时功效不足。剪补法不能把缺失研究“找回来”,应结合注册、灰色文献和结果报告偏倚讨论。
  • 多重结果: 预先指定主要结局,或使用稳健方差估计/多层模型处理相关效应。报告每项研究贡献,而不是只给一张漂亮森林图。

常见误用

不要把 I2 当作模型选择开关,不要把随机效应合并值写成“所有人都有效”,也不要把元分析的关联证据改写为因果机制。研究质量评估(偏倚风险、测量质量和实施差异)应与统计权重分开报告。

结果如何报告与导出 ​

结果段至少交代:检索与纳入数量、效应量定义和方向、模型与 τ2 方法、合并效应及 95% CI、异质性指标、预测区间(若使用)、调节与敏感性分析、发表偏倚证据和软件版本。森林图应能追溯到 study_id 和原始页码;把分析表、代码、锁定的依赖版本和 PRISMA 流程图一起存档。若使用真实数据,先移除可识别信息并遵守原研究的使用许可。

资源与工具 ​

延伸阅读 ​

  • Borenstein, M., Hedges, L. V., Higgins, J. P. T., & Rothstein, H. R. (2021). Introduction to Meta-Analysis (2nd ed.). Wiley.(版本与书目信息请按图书馆记录核对。)
  • Higgins, J. P. T., et al. (2023). Cochrane Handbook for Systematic Reviews of Interventions, version 6.4. Cochrane. https://training.cochrane.org/handbook/current
  • Page, M. J., et al. (2021). The PRISMA 2020 statement. BMJ, 372, n71. https://doi.org/10.1136/bmj.n71