2、理解批次效应:技术批次与生物批次、常见混淆因素、如何可视化批次效应

做单细胞数据分析,第一关其实就是和「批次效应」打交道。我刚入行那会儿,总觉得数据整合就是丢进一个函数跑完就完事了。结果有一次,我明明加了个 Harmony 整合,UMAP 图上还是能看到不同实验日期的小聚类,特别扎眼。那会儿才意识到,如果不理解批次效应是什么,你连参数都调不对。

这节我们就把这件事聊透。说白了,批次效应就是你的数据里「不应该存在的结构」。但它有时候又很难和真实的生物学差异区分开,所以理解它才是校正的第一步。

2.1 批次效应的本质:它从哪里来?

批次效应,简单来说就是:同一批样本中,技术操作带来的系统性差异。你想想看,同一份组织,分开两次做单细胞捕获、建库、测序,最后数据可能长得像两个完全不同的样本。

为什么会这样?因为实验流程中的每一步都有噪声。

核心概念:批次效应 ≠ 实验错误。它是由不可避免的技术波动引起的,不是人为失误。

技术批次 vs 生物批次,这两个概念必须先分清。

类型 来源 举例 是否需要校正?
技术批次 实验操作、试剂、仪器、日期 同一患者样本分两次上机;不同操作员做的实验 必须校正
生物批次 个体间差异、疾病状态、组织来源 患者A vs 患者B;用药前 vs 用药后 保留,这是你的生物学信号
我曾经踩过一个坑:把患者间的生物学变异也当作批次效应强行校正掉了。结果下游的差异基因分析什么都找不到。记住,你校正的只能是技术批次,而不是个体间的真实差异。

2.2 常见混淆因素:陷阱在哪里?

现实数据里,技术批次和生物批次经常纠缠在一起。这就是所谓的「混淆因素」。举个例子:

  • 你在第1天处理了所有健康对照样本,第2天处理了所有疾病样本。
  • 那么,「疾病 vs 健康」这个生物因素,和「第1天 vs 第2天」这个技术因素,完美重合了。
  • 这时候你根本分不清 UMAP 上的分离是因为生物学差异,还是因为试剂批次不同。

我个人的经验是:实验设计时就要考虑批次平衡。如果做不到(很多回顾性数据没法控制),那整合算法的选择和参数调整就需要格外小心。Seurat CCA 和 Harmony 在这种情况下表现会不一样,后几节我们会讲。

常见的混淆因素,我列个清单:

  1. 实验日期 — 最容易出问题,也最容易忽略。
  2. 操作员 — 不同人手速、操作习惯真的会影响细胞捕获效率。
  3. 试剂批次 — 10x 试剂盒批次之间的差异,我之前见过明显的 UMI 计数差异。
  4. 测序批次 — 不同 flow cell、不同测序仪,GC bias 都不一样。
  5. 冻存 vs 新鲜样本 — 这个差异有时候比不同个体还大。

2.3 如何可视化批次效应?

看过很多数据,我认为可视化批次效应这件事,比任何统计检验都直观。你的眼睛就是最好的检测器。

常用的可视化方法就三种:PCA、t-SNE、UMAP。

具体怎么做?在整合之前,先用每个样本或每个批次标签给细胞着色,看它们在降维图上是否按批次聚类。

# R 语言示例:用 Seurat 可视化整合前的批次效应
# 假设你已经有一个合并后的 Seurat 对象 seurat_obj
# 先归一化 + PCA
seurat_obj <- NormalizeData(seurat_obj)
seurat_obj <- FindVariableFeatures(seurat_obj, selection.method = "vst", nfeatures = 2000)
seurat_obj <- ScaleData(seurat_obj)
seurat_obj <- RunPCA(seurat_obj)

# 用批次标签着色 PCA
DimPlot(seurat_obj, reduction = "pca", group.by = "batch_id")
# 也可以用 UMAP
seurat_obj <- RunUMAP(seurat_obj, dims = 1:30)
DimPlot(seurat_obj, reduction = "umap", group.by = "batch_id")
一个小技巧:我习惯在画 PCA 图时,同时按批次和生物学条件分面。这样一眼就能看出混淆的程度。

你会在图上看到什么?

  • 如果不同批次混在一起,没有明显的分离 → 批次效应很微弱,可能不需要复杂整合。
  • 如果不同批次完全分开,形成各自独立的聚类 → 明显的批次效应,需要校正。
  • 如果批次分离的同时,生物学条件也完美对应同一聚类 → 严重混淆,这时候需要非常小心。

我以前处理过一个数据,PCA 上前三个主成分都是 batch 驱动的,生物学信号被压制到 PC4 以后了。那种情况,不校正根本没法往下走。

批次效应可视化框架与整合流程 技术批次 实验日期 操作员 / 试剂批次 测序批次 冻存 vs 新鲜 生物批次 个体间差异 疾病 vs 健康 用药前后 组织来源 混淆因素:技术批次与生物批次重合 如:所有疾病样本在第1天处理,对照在第2天 可视化方法 PCA t-SNE UMAP 评估标准 不同批次是否分离? 生物学条件是否混淆? 是否需要校正? 校正方案 Seurat CCA Harmony scVI (后续) 批次效应的可视化是整合前最重要的一步,直接影响你选择哪种校正策略

除了降维图,还有一种更量化的方式:批次内相关系数。但说句实话,这玩意儿做起来有点绕。我通常只看 PCA/UMAP 图上样本间是否有明显分离。如果目测看不出,我还会用下面这个指标辅助判断:

LISI(Local Inverse Simpson Index)。这个值衡量的是局部邻域内批次的混合程度。1 表示纯 batch,越大表示混合越好。这件事我们到讲到 Harmony 的那一节再展开,因为 Harmony 的原理跟这个指标密切相关。

一个小经验:不要只看一个降维成分。有时候批次效应只在 PC3-PC5 里暴露出来,PC1 被强烈的细胞类型信号主导了。所以,我习惯多画几张图,把 PC1 vs PC2、PC2 vs PC3、PC1 vs PC3 都看一遍。

好了,总结一下这一节的核心:

  • 技术批次必须校正,生物批次必须保留。
  • 混淆因素是最大的杀手,实验设计阶段就要尽量避免。
  • 可视化是判断批次效应的第一手工具,PCA + 批次标签着色是最快的检查方式。

理解完批次效应长什么样,下一步就可以看不同的整合算法是怎么解决这个问题的了。