2. 批次效应产生的原因与影响

做组学数据分析这些年,我见过最多的坑就是批次效应。说实话,刚入行那会儿我也不太当回事,总觉得数据都测出来了,标准化一下不就好了?结果有一次做转录组整合分析,三个批次的样本放在一起,差异基因热图直接给我画出三个“殖民地”——每个批次一个颜色块,生物学分组根本看不见。这还没完,后续的富集分析全偏了。

那次之后我就学乖了。处理任何multi-batch数据,第一件事就是问:这批数据是怎么来的?实验做了几轮?送样时间隔了多久?操作人员是不是同一个?试剂批号变没变?仪器换没换?——这些问题背后,就是批次效应的根源。

核心认识:批次效应不是异常,而是多批次实验的必然产物。我们的任务不是消灭它(做不到),而是识别它、量化它、校正它。

2.1 批次效应是怎么产生的?

我习惯把原因分成三类:实验操作类、环境材料类、数据处理类。你仔细看看,大部分数据集的批次问题都能归到这三类里。

类别具体因素典型案例
实验操作不同操作人员、不同实验日期、不同取样手法RNA提取效率波动5–20%
环境材料试剂批号变更、温度/湿度偏移、仪器校准差异微阵列芯片批次间荧光强度差2–3倍
数据处理不同分析软件版本、参数设置差异、归一化方法不统一Log2转化后均值漂移0.3–0.8

嗯,这里要特别提一下“隐蔽批次效应”。我记得有一次帮一个合作团队看代谢组数据,表面上看样本是按时间顺序收集的,但仔细检查发现——所有肿瘤样本都是上午取样,所有正常样本都是下午取样。这导致了代谢物水平的系统性差异,让人误以为是肿瘤相关的生物标志物。你想想看,这种隐含在实验设计里的结构性问题,光靠事后校正是很难干净的。

2.2 批次效应长什么样?

它是两种表现的混合体:均值偏移 和 方差膨胀。

  • 均值偏移:同一基因在不同批次中表达水平整体抬高或压低。比如批次1的基因A平均表达量是5,批次2的平均量却到了7。
  • 方差膨胀:批次内部的变异被人为扩大或缩小。有时候同一个处理组的样本,在批次1里挤在一起,在批次2里却散得到处都是。

我们用一个简单的模拟来感受一下。假设有两个基因(G1、G2),在三个批次(B1、B2、B3)中分别测量了5个样本。原始值里其实没有生物学差异,但批次效应加进去之后——

# 模拟批次效应(R伪代码示意)
set.seed(42)
G1_B1 <- rnorm(5, mean=5, sd=0.3) + 0      # 无偏移
G1_B2 <- rnorm(5, mean=5, sd=0.3) + 2      # +2 偏移
G1_B3 <- rnorm(5, mean=5, sd=0.3) - 1      # -1 偏移
G2_B1 <- rnorm(5, mean=5, sd=0.3) - 1
G2_B2 <- rnorm(5, mean=5, sd=0.3) + 1
G2_B3 <- rnorm(5, mean=5, sd=0.3) + 2.5

你仔细看,G1在B2里的均值比B1高出2个单位,G2在B3里又高出2.5个单位——这些都是纯技术变异,不是生物学信号。

2.3 它带来的影响有多严重?

我个人认为可以分成三个层面来评估。

第一层:假阳性激增

这是最常见的后果。当批次效应与生物学分组混杂时(比如病例组都在第一批,对照组都在第二批),差异分析几乎一定会把批次差异当成组间差异。我在一篇论文里见过两个批次整合后,不加校正就跑edgeR,结果假阳性率高达60%。说白了,你找到的绝大多数“差异基因”都是批次效应。

第二层:假阴性增加

批次效应不仅会制造假阳性,还会掩盖真实的差异。如果某基因的真正变化幅度小于批次间的噪声水平,它就永远不可能被检测到。这就好比在嘈杂的房间里想听清远处的人说话——信号完全被淹没了。

第三层:分类偏离与结果不可重复

聚类分析中,样本往往先按批次聚在一起,再才跟生物学分组相关。有些文章直接用PCA图展示批次分离,却说“无关批次效应”——这其实已经承认了技术变异主导了数据结构。更严重的是,如果用批次效应污染的数据训练预测模型,模型学到的是批次特征而非生物学特征,在不同实验室的数据上几乎一定失效。我曾经见过一个表观遗传学项目,在同一批数据上构建的分类器在独立验证集上准确率直接掉到50%以下——原因就是验证集来自另一个批次的测序。

⚠ 最大误区:很多人以为批次效应只在芯片数据中存在,其实RNA-seq、蛋白质组、代谢组、单细胞数据一样受到严重干扰。尤其单细胞数据,不同试剂批号、不同上机日期导致的基因表达系统性漂移足以混淆细胞亚群注释。

2.4 怎么样才算是“够严重”?

我常用的判断指标有三个,你可以在做校正前先量化一下:

  • 批次间相关系数(Pearson r 或 ICC):同一生物学状态下,不同批次样本间的相关性应该高于0.8。低于0.6就说明批次效应已经严重干扰了信号。
  • PCA/UMAP 可视化:如果样本按批次聚类,而不按生物学分组聚类,说明批次效应主导了数据结构。
  • 技术重复的一致性:如果同一个样本的两次测量(技术重复)在PCA图上不被认为是同一个点,而是分开的,那基本上可以判定批次效应不可忽略。

2.5 一个小经验框架

下面这个批次效应识别 → 量化 → 缓解流程是我一直在项目里用的,你参考一下:

批次效应处理框架 识别 PCA/热图/QC指标 原因分析 实验/环境/数据 严重程度 轻微/中等/严重 缓解策略 SVA / ComBat / limma 评估 PCA后验证 / RLE图 要点 • 先识别,再校正 • 选择与数据匹配的方法 • 校正后必须验证 • 保留原始数据不变

💡 实用建议:千万别跳过第一步直接上校正工具。我曾经见过有人把所有数据直接扔进ComBat,结果因为样本量太小、批次太混杂,校正后反而让生物学信号扭曲了。先画一张PCA图,看一眼“第一主成分是否对应批次”——这一步只需要3分钟,但能帮你省下后面3天的纠错时间。

2.6 有没有不用校正的情况?

有。我自己的判断规则是:

  1. 批次效应轻微且无混杂:如果各批次的生物学分组完全平衡,批次效应又小于0.2个标准差,我有时会不校正——但必须写明在论文的limitation里。
  2. 后续分析方法对批次不敏感:某些基于秩的非参数方法(比如秩和检验)对均值偏移有一定耐受性,但切勿依赖此侥幸。
  3. 单批次数据:只有一组样本,没有整合需求,自然不会牵扯批次效应问题。

除此之外,我建议无论数据集看起来多“干净”,都要做批次效应检测并记录在校正流程中。因为审稿人现在越来越成熟,不展示批次效应评估流程几乎会被直接质疑数据的可靠性。