1. 为什么需要批次效应检测?
做组学数据分析的人,十有八九都遇到过这个场景:明明是一个实验设计,样本分了两批测序,结果一跑主成分分析,第一批和第二批样本各自聚成一团,根本不按生物学分组来。我第一次碰上这事还以为是代码写错了,折腾了两天才反应过来——这就是典型的批次效应。
说白了,批次效应就是非生物学变量引入的系统误差。它把数据中真实的生物学信号和无关的技术噪声搅在一起。如果你不提前把它揪出来,后续差异分析、聚类、分类全都会跑偏。今天这一章,我们就聊聊批次效应到底是什么、从哪来、为什么非管不可。
1.1 什么是批次效应?
批次效应是指不同实验批次之间因操作条件、试剂、仪器等非生物学因素导致的数据系统性偏移。举个我实际遇到的例子:一个RNA-seq项目,A批次用了旧版试剂盒,B批次换了新版,结果两组样本在表达矩阵前10个主成分上直接裂开,而生物学分组(肿瘤 vs 正常)反而被掩盖了。
更直观一点,看这张简化图:
特征:批次效应不改变某个基因在所有样本中的表达趋势,但会整体抬高或压低某个批次的所有基因值。它和生物学变异是混叠在一起的。
1.2 批次效应从哪来?
根据我的经验,批次效应的来源可以归纳成几类,我列了一个表:
| 来源类别 | 具体因素 | 典型表现 |
|---|---|---|
| 试剂 | 试剂盒批号更换、引物/探针批次差异 | 信号强度整体偏移 |
| 仪器 | 测序仪不同、扫描仪校准漂移 | 检测灵敏度不一致 |
| 操作 | 不同实验员、操作时间差 | 提取效率波动 |
| 环境 | 温湿度、实验室搬迁 | RNA降解程度差异 |
| 时间 | 跨天/跨月做完实验 | 基线噪声不同 |
你想想看,上面任何一条单独拎出来可能影响不大,但要是几个因素叠加,数据里的“批次标签”往往比“生物学分组”还显著。
1.3 批次效应带来的麻烦
不检查批次效应直接做分析,后果挺严重。
- 假阳性膨胀:差异基因筛选时,批次间差异被误认为处理效应。
- 假阴性激增:真实生物学差异被批次噪声淹没,统计检验检不出来。
- 聚类失效:样本按批次聚团,生物学亚型分不开。
- 模型过拟合:机器学习分类器学到的其实是批次标签,而非生物分组。
我曾经接过一个客户的项目,他们跑完差异表达拿到了500多个“显著基因”,复查后发现有300多个纯粹是批次差异导致的。从那次以后,我把批次效应检测写到了所有组学分析流程的第一步。
1.4 怎么检测?——PCA 聚类初步判断
检测批次效应的方法很多,但最常用、最直观的开局手段就是主成分分析(PCA)加上聚类可视化。为什么用PCA?因为它能在不预设分组的情况下把数据最大方差方向展现出来。如果第一个主成分(PC1)能清晰分开两个批次,那大概率有批次效应。
流程大致是这样:
- 读入表达矩阵,样本按批次标记颜色。
- 标准化(可选),运行PCA降维到前两个主成分。
- 绘制散点图,观察批次是否聚团。
- 如果PC1/PC2明显分为几坨,且颜色和批次吻合——警报拉响。
下面这张图概括了整体思路:
小技巧:PCA 散点图上,我习惯同时画批次颜色和生物学分组颜色两个版本。两个图对比看,很快就能判断是批次主导还是生物学主导。
1.5 什么时候必须做批次效应检测?
没有例外。只要数据来自多个实验批次,无论操作多规范,我都会先跑一遍PCA。具体场景:
- 公共数据库中合并多个数据集(如 TCGA + GTEx)
- 多中心临床队列
- 跨平台比较(芯片 vs 测序)
- 时间跨度大的同实验室项目
避坑指南:我曾经犯过一个错——看到PCA图批次没分开就以为安全了,结果在后续主成分上(PC3、PC4)批次效应其实很明显。所以单看前两维不够,建议多检查几个主成分,或者用 t-SNE / UMAP 辅助验证。