2. 批次效应概念

批次效应,说白了就是“不是你实验变量带来的差异,却长得跟真差异一样”。

我刚开始做RNA-seq的时候,总以为把样品送去测序,拿到count矩阵就能直接跑差异分析了。结果有一次,我同时处理了两批小鼠肝组织样品——一批是上个月做的,一批是上周补的。跑完PCA一看,诶?所有样品按“送样时间”完美分开,处理组和对照组反而混在一起。我当时就懵了。

这就是典型的批次效应。它不是你的生物学变量(比如处理、时间点)引起的,而是因为样品在不同时间、不同试剂盒、不同操作员、不同测序通道下产生的系统性偏差。

核心定义:批次效应是指由于非生物学因素导致的、在不同实验批次之间出现的系统性技术差异。它会掩盖或扭曲真实的生物学差异,是差异分析的头号干扰因素。

批次效应从哪里来?

在我这些年处理过的几十个项目中,批次效应的来源可以说是五花八门。但归纳起来,主要就这几类:

来源类别 具体原因 我在项目中遇到过
技术操作 RNA提取试剂盒批次不同、反转录酶批次变化、文库构建试剂盒厂商不同 有一次换了个牌子的Trizol,结果GC含量偏高的基因整体down了
测序平台 不同测序仪(HiSeq vs NovaSeq)、不同flow cell、不同lane、不同测序深度 同一批样品在两个NovaSeq lane上跑,其中一个lane的reads质量肉眼可见地低
时间因素 样品采集时间、RNA提取时间、建库时间、测序时间不同 春夏两季采集的血液样本,RNA降解程度差异很大
人员差异 不同实验员操作手法不同、不同实验室标准不同 两个实验室同时做同一个敲除实验,结果差异表达基因一多半是技术重复导致的

你可能要问:这些因素真的有这么严重吗?

我跟你讲,有一次我差点因为批次效应发了一篇“假阳性”文章。那是一个药物处理实验,对照组和处理组各自在不同批次测序。跑差异分析前我没做批次校正,结果发现了3000多个差异基因。当时我还挺兴奋,觉得这个药效果真猛。直到我的一位师兄提醒我:“你不觉得这3000个基因里,有2000个都是housekeeping gene吗?”我重新检查才发现,这些所谓的“差异”其实就是两个批次间的系统偏差,跟药物没有半毛钱关系。

警告:如果实验设计存在批次与生物学变量“完全混杂”(比如所有处理组在批次1,所有对照组在批次2),那么任何统计方法都无法区分批次效应和真实处理效应。这是实验设计层面的致命错误,后期补救几乎不可能。

批次效应的表现特征

我个人判断一个数据有没有批次效应,通常看三个信号:

  • 主成分分析(PCA):如果PCA图上,样品按批次分开而不是按实验分组分开,那十有八九有批次效应。我一般会先画一张按实验条件着色的PCA,再画一张按批次着色的PCA,对比一下。
  • 层次聚类(HCA):如果聚类树的第一层分支是按批次而不是按处理划分,说明批次效应是主导变异来源。
  • 箱线图或密度图:各个批次样本的表达量分布形状差异太大,比如一个批次整体表达量偏低,另一个批次偏高。

小技巧:初学者可以先跑个简单的PCA,不用跑任何模型。如果前两个PC的方差解释率加起来不到30%,说明其他因素(可能包括批次)干扰了结构。这时候再按批次着色看一下,基本就清楚了。

批次效应的“好”与“坏”

你可能觉得奇怪:批次效应还能有好的?

其实,批次效应本身是中性的。它是技术噪声,不是主观错误。关键在于:

  • 如果不纠正:它会制造大量假阳性差异基因,也会掩盖真实差异,相当于往数据里掺沙子。
  • 如果正确建模:通过DESeq2的设计公式或批量校正方法,可以把这部分变异剥离出来,不让它干扰差异检验。
  • 如果完全无法建模:只有两个批次且二者与实验条件完全混杂,那这场实验已经废了。

我记得有次我帮一个师弟看数据,他做的同一个细胞系在不同时间点的RNA-seq。三个时间点,每个点四个生物学重复。PCA一看,所有时间点混在一起,完全没趋势。后来我让他标注每个样品的建库批次,发现每个时间点的样品都是在不同批次建的库,而且建库批次跟时间点完全对应。这意味着时间效应和批次效应完全纠缠在一起,根本分不开。这就是典型的“完全混杂”——从统计上讲,这是个无解的设计问题。

批次效应在RNA-seq分析中的影响路径 原始RNA-seq数据 批次效应来源 技术操作 / 测序平台 / 时间 / 人员 影响差异分析 假阳性 + 灵敏度下降 批次效应校正 DESeq2: 设计公式 ~ batch + condition 或: limma::removeBatchEffect() 真实差异基因 重要:批次不能与实验条件完全混杂!

实际操作中,我怎么识别批次效应?

除了上面说的PCA和聚类,我还常用一个土办法——看“housekeeping gene”的表达量。

Housekeeping gene(比如GAPDH、ACTB)正常情况下在不同样本间表达是稳定的。如果发现它们在两个批次间表现出系统性差异,那基本可以判断存在批次效应。当然这不是严格的统计检验,但在探索性分析阶段是个很好的快速检查手段。

另一个实用的方法是相关性热图。不同批次的样本之间如果相关系数显著低于同一批次内的相关系数,那就是批次效应的直接证据。

我的个人经验:不要等到跑完差异分析再去处理批次效应。拿到count矩阵的第一件事,就是可视化检查批次结构。早发现,早处理,后期会少很多麻烦。