第2章 批次校正的重要性:校正与否对下游分析的影响

做单细胞分析这几年,我见过太多人把数据往Seurat或Scanpy里一扔,直接跑分群、找marker,结果画出来的UMAP图漂亮得不行——但仔细一看,咦?对照组和实验组各自抱团,根本就是两个「批次」在打架。这就是典型的批次效应没处理。

说白了,批次校正不是可选项,而是必修课。今天这篇我就掏心窝子跟你聊聊:为什么必须做?不做会怎样?

2.1 批次效应从哪来?

先别急着敲代码。你得先明白批次效应是怎么溜进来的。

我自己的项目经历里,常见的元凶有这么几个:

  • 样本处理时间不同:上午做的和下午做的,细胞活性可能就不一样
  • 不同操作人员:手速、离心力、消化时间,每个人习惯不同
  • 试剂批次差异:甚至同一厂家不同批号的试剂,RNA回收率都有差别
  • 测序平台或芯片:10x Genomics v2 vs v3,或者不同测序lane
  • 冻存 vs 新鲜样本:冻存过的细胞往往应激基因高表达

这些因素叠加在一起,产生的系统偏差就是批次效应。它不是你实验设计的问题——它天生就存在,你必须正视它。

2.2 不校正的后果:虚假差异与真实信号混为一谈

我直接给你看一个典型场景。假设你有两个样本:正常组(Sample A)和疾病组(Sample B),各自做了两次重复。

如果不校正批次,直接合并跑降维,你大概率会看到这样的结果:

  • UMAP/t-SNE上按样本分离,而不是按生物学条件分离
  • 差异分析找到的「marker基因」其实是批次特异性基因
  • 聚类结果里出现「伪细胞类群」——比如「Sample A特异群」
  • 后续的细胞类型注释完全跑偏

真实案例:我有个同事,做肿瘤浸润T细胞分析,合并了3个病人样本(每个病人有治疗前后两个时间点)。他没做校正,直接聚类,结果分出「病人1群」「病人2群」「病人3群」——这哪是细胞类型啊?这分明是病人ID效应。后来用了CCA校正,才真正看到CD8+耗竭T细胞在治疗后的扩增趋势。

2.3 校正后的收益:生物学差异浮出水面

批次校正做对了,效果是立竿见影的:

  1. 不同批次的同类细胞能混在一起——同一细胞类型不按样本分开
  2. 真正的生物学差异变大——比如疾病vs正常之间差异更明显
  3. 伪差异基因减少,差异分析的假阳性率大幅下降
  4. 细胞类型注释更可靠,不会因为批次把同一类群分成两个

但是注意,校正不能过度。如果校正强度太大,会把真实的生物学差异也抹掉。嗯,这个度怎么把握,在后续几章讲具体方法时会重点聊。

2.4 什么时候可以不做校正?

别误会,我不是说所有情况都必须校正。有些场景下不做也行:

  • 只有一个样本(没有批次可变性)
  • 所有样本在同一次实验、同一批试剂、同一个人操作下完成——理论上批次效应很小
  • 你是做整合分析想故意保留样本特异性,比如找个体间差异(但通常还会做轻度校正)

即便如此,我还是建议你至少做一次质量控制层面的检查——画个按样本着色的UMAP,看清况再决定。

2.5 核心知识框架

下面这张图总结了批次校正的核心逻辑:从原始数据到校正后结果,中间每一步都藏着坑。

批次校正影响下游分析流程 原始单细胞数据 不校正批次 批次校正后 虚假聚类 伪差异基因 细胞注释错误 真实生物学聚类 准确差异基因 可靠细胞注释 避坑指南 • 永远先查看UMAP/tsne按样本着色图,确认是否存在批次分离 • 不要迷信单一校正方法,不同数据集适合不同算法 • 校正后必须验证:生物学重复是否混在一起?阳性对照基因是否仍然差异?

2.6 校正方法的粗略分类

市面上主流的校正方法五花八门。但你别慌,它们可以粗分为几类。下面这个表格我根据自己踩坑的经验总结的,希望能帮你快速定位该选哪个。

方法类别 代表算法 核心思路 适用场景
基于锚点整合 Seurat CCA + MNN 找跨批次的「锚点对」来对齐 异质性大、不同平台的数据
基于互近邻 Scanpy MNN 在高维空间找最近邻配对校正 同类型数据、样本间差异中等
基于回归 regress_out / ComBat 线性回归去除批次方差 批次信息已知且简单
基于深度学习 scVI / Harmony 变分自编码器或聚类矫正 大规模数据、复杂批次结构

看到这个表,你可能会问:「这么多方法,我怎么选?」别急,后面几章会逐个拆解,还会对比Seurat和Scanpy在每种方法上的实现差异。

我的经验:刚开始做整合时,我习惯先用Harmony(快速看全局结构),再用Seurat的CCA或Scanpy的scVI做精细校正。不过这只是个人习惯,不同数据集最优方案不同——你得亲自试。

2.7 一个快速检验批次效应的脚本思路

不管选什么方法,第一步永远是「诊断」。我建议你这样检查:

# 伪代码逻辑,实际语法因工具而异
# 1. 合并数据后,不校正直接PCA
# 2. 取前20个PC,计算样本间的欧氏距离
# 3. 如果同一批次内的距离远小于批次间的距离→严重批次效应
# 4. 或者直接画UMAP按批次着色,一眼就能看出问题

这个简单的流程,能帮你快速判断该不该上校正。我见过太多人跳过了这一步,结果花了大量时间调参校正一个本来就不存在的批次问题——嗯,这完全没必要。

2.8 总结:校正不是万能的,不校正是万万不能的

最后再强调一遍:批次效应检测是单细胞分析流水线上最容易被忽视的一环,但它的影响是全局性的。如果你不做校正,任何后续的下游分析——差异表达、轨迹推断、细胞通讯——都可能得出错误结论。

曾经有个学生拿着他的数据来找我,说用Seurat跑出来发现「疾病组有独特的T细胞亚群」。我瞄了一眼UMAP,样本标签显示「疾病组3个样本全部分在一起,对照组3个样本也全部分在一起」。这就不是生物学差异,是批次差异。后来我用CCA校正之后,那个神奇的「T细胞亚群」消失了——原来是伪影。