1. 为什么需要批次效应检测?

做组学数据分析的人,十有八九都遇到过这个场景:明明是一个实验设计,样本分了两批测序,结果一跑主成分分析,第一批和第二批样本各自聚成一团,根本不按生物学分组来。我第一次碰上这事还以为是代码写错了,折腾了两天才反应过来——这就是典型的批次效应。

说白了,批次效应就是非生物学变量引入的系统误差。它把数据中真实的生物学信号和无关的技术噪声搅在一起。如果你不提前把它揪出来,后续差异分析、聚类、分类全都会跑偏。今天这一章,我们就聊聊批次效应到底是什么、从哪来、为什么非管不可。

1.1 什么是批次效应?

批次效应是指不同实验批次之间因操作条件、试剂、仪器等非生物学因素导致的数据系统性偏移。举个我实际遇到的例子:一个RNA-seq项目,A批次用了旧版试剂盒,B批次换了新版,结果两组样本在表达矩阵前10个主成分上直接裂开,而生物学分组(肿瘤 vs 正常)反而被掩盖了。

更直观一点,看这张简化图:

特征:批次效应不改变某个基因在所有样本中的表达趋势,但会整体抬高或压低某个批次的所有基因值。它和生物学变异是混叠在一起的。

1.2 批次效应从哪来?

根据我的经验,批次效应的来源可以归纳成几类,我列了一个表:

来源类别具体因素典型表现
试剂试剂盒批号更换、引物/探针批次差异信号强度整体偏移
仪器测序仪不同、扫描仪校准漂移检测灵敏度不一致
操作不同实验员、操作时间差提取效率波动
环境温湿度、实验室搬迁RNA降解程度差异
时间跨天/跨月做完实验基线噪声不同

你想想看,上面任何一条单独拎出来可能影响不大,但要是几个因素叠加,数据里的“批次标签”往往比“生物学分组”还显著。

1.3 批次效应带来的麻烦

不检查批次效应直接做分析,后果挺严重。

  • 假阳性膨胀:差异基因筛选时,批次间差异被误认为处理效应。
  • 假阴性激增:真实生物学差异被批次噪声淹没,统计检验检不出来。
  • 聚类失效:样本按批次聚团,生物学亚型分不开。
  • 模型过拟合:机器学习分类器学到的其实是批次标签,而非生物分组。

我曾经接过一个客户的项目,他们跑完差异表达拿到了500多个“显著基因”,复查后发现有300多个纯粹是批次差异导致的。从那次以后,我把批次效应检测写到了所有组学分析流程的第一步。

1.4 怎么检测?——PCA 聚类初步判断

检测批次效应的方法很多,但最常用、最直观的开局手段就是主成分分析(PCA)加上聚类可视化。为什么用PCA?因为它能在不预设分组的情况下把数据最大方差方向展现出来。如果第一个主成分(PC1)能清晰分开两个批次,那大概率有批次效应。

流程大致是这样:

  1. 读入表达矩阵,样本按批次标记颜色。
  2. 标准化(可选),运行PCA降维到前两个主成分。
  3. 绘制散点图,观察批次是否聚团。
  4. 如果PC1/PC2明显分为几坨,且颜色和批次吻合——警报拉响。

下面这张图概括了整体思路:

批次效应 PCA 聚类检测流程 原始表达矩阵 批次效应? PCA 降维 PC1 / PC2 散点图 按批次着色 肉眼判断聚类 批次效应 PC1 分开批次→确认 关键观察点 • 如果 PC1 方向能明显分开批次标签 → 批次效应强 • 如果批次混在一起、生物学分组分离 → 批次效应弱或可接受 • 必要时用 ComBat / limma::removeBatchEffect 校正
小技巧:PCA 散点图上,我习惯同时画批次颜色和生物学分组颜色两个版本。两个图对比看,很快就能判断是批次主导还是生物学主导。

1.5 什么时候必须做批次效应检测?

没有例外。只要数据来自多个实验批次,无论操作多规范,我都会先跑一遍PCA。具体场景:

  • 公共数据库中合并多个数据集(如 TCGA + GTEx)
  • 多中心临床队列
  • 跨平台比较(芯片 vs 测序)
  • 时间跨度大的同实验室项目
避坑指南:我曾经犯过一个错——看到PCA图批次没分开就以为安全了,结果在后续主成分上(PC3、PC4)批次效应其实很明显。所以单看前两维不够,建议多检查几个主成分,或者用 t-SNE / UMAP 辅助验证。