2. 批次效应是怎么来的?从生物学到统计学

今天咱们聊聊批次效应的根源。说白了,就是为什么同一种实验,换个时间做,结果就不一样了。

我个人习惯把原因分成两类:生物学源头和统计学表现。一个管“怎么来的”,一个管“长什么样”。

先看个我早年踩过的坑。记得有个癌症项目,分三批送测。第一批是医院A的样本,第二批换了个医院,第三批连试剂盒都换了。结果PCA一画,样本按批次聚成三团,完全看不到肿瘤分型。老板问我:“数据是不是假的?”

我当时解释了一通批次效应,但说实话,自己也是懵的。后来才慢慢理清这里的门道。

核心观点:批次效应 = 生物学变异 + 技术变异 + 统计混淆。 如果技术变异大于生物学变异,分析就废了。

2.1 生物学原因:其实不只技术问题

很多人以为批次效应全是仪器漂移或试剂差异。其实好多是生物学本身带来的。你想想看:

  • 样本采集时间不同:人的生理状态早上和下午就不一样。小鼠的昼夜节律也会左右基因表达。
  • 样本处理方式:有的实验室用液氮速冻,有的放-80℃过夜。RNA降解程度差很多。
  • 个体差异:不同个体的基线表达本身就不一样。要是每组样本数少,这种差异很容易被误判为批次效应。

举个例子。我处理过一个RNA-seq数据,来自三个不同季节采集的血样。冬季样本的免疫相关基因普遍偏高。这不是技术问题,而是人体对寒冷环境的自然反应。但如果我们按批次校正,可能就把真实的生物学信号给校没了。

千万注意:校正批次效应前,先确认它到底是技术噪音,还是生物学变异。 校错了,后果比不校还严重。

2.2 统计学原因:数理层面怎么表现

从统计角度看,批次效应其实是一种系统性的偏差。它不随机,也不独立于分组。

我一般会用这个模型来理解:

Y_ij = μ + β_i + ε_ij

其中:

  • Y_ij:第i批第j个样本的观测值
  • μ:真实均值
  • β_i:第i批的批次效应
  • ε_ij:随机误差

如果β_i在所有基因上都是常数,那这属于全局偏移,比较好处理。但现实往往更恶心——基因特异性的批次效应才是常态。

统计学表现 含义 处理难度
位置偏移 各批次的均值整体偏高或偏低 低(直接均值中心化)
尺度变化 各批次的方差不同 中(需要标准化)
交互效应 批次效应与分组变量纠缠 高(可能无法完全校正)
缺失数据模式 某些信号只在部分批次被检测到 极高(丢弃部分基因)

我见过一个更隐蔽的问题。有人做单细胞测序,不同批次测出的细胞类型比例差异巨大。这不是基因表达的问题,而是细胞捕获效率不同导致的组成效应。你用常规方法一校正,某些稀有细胞群直接消失了。

2.3 为什么批次效应总是阴魂不散?

说白了,现代高通量实验太“灵敏”了。一个PCR扩增都会因为微小温度变化而放大差异。更别提测序仪不同通道间的荧光强度差异。

我之前做过一个仿真实验。把同一样本分成两份,在同一天、同一仪器上跑两次。结果发现,即使这样,也有约5%的基因存在显著差异。这些差异完全来自随机噪音。当样本量增加时,这种噪音会累积,形成伪装的“批次效应”。

一个小技巧:在正式分析前,先做一次“自我对比”——把同一个样本重复测量几次,看看基线噪音有多高。 这样你能判断后续看到的差异到底是不是真的。

你想想看,如果某个批次效应强度是真实生物学效应的一半,那你的统计分析马上变得非常脆弱。需要更大的样本量才能分离出真实信号。这也是为什么我一直强调:实验设计时就要做批次规划,别等数据出来了再想办法。

批次效应产生原因框架 生物学源头 样本采集时间 / 季节差异 个体间基线表达差异 样品处理方法(冻存/RNA降解) 昼夜节律 / 生理状态波动 统计学表现 系统性位置偏移(均值差异) 尺度变化(方差差异) 批次 × 分组交互效应 缺失数据模式(检测差异) 技术噪音 + 生物学变异 → 批次效应

说实话,理解批次效应的根源,比学习任何校正算法都重要。因为只有知道它怎么来的,你才能对症下药。否则,对着一个PCA图,你都不知道该信谁。