1. 批次效应概念:什么是批次效应、批次效应的来源与影响

做生物信息学数据分析的人,十有八九都跟「批次效应」打过交道。我第一次意识到这玩意儿,是几年前在分析一批RNA-seq数据的时候——同样的处理组,不同时间测的两批样本,聚类居然分成两团。我当时还以为是处理效果,折腾了好几天才发现,其实就是批次不同。嗯,从那以后我再也不敢忽略批次了。

1.1 什么是批次效应

说白了,批次效应就是把一批样本当作一个「批次」处理时,因为非生物学因素引起的系统性偏差。

举个例子:你今天收了一批肿瘤样本,明天又收了一批。虽然都是同一个医院、同一个操作规范,但试剂可能换了个批号,仪器可能重新校准过,甚至室温都不一样。这些「非生物因素」会在数据里留下痕迹——让同一类样本因为批次不同而表现不同,而不是因为生物学差异。

我个人的理解是:批次效应就像照片的滤镜。原本同样的风景,换个滤镜就变了颜色。我们做生物信息,要的是真实的风景,不是滤镜后的假象。

核心定义:批次效应是实验过程中因操作时间、试剂批次、仪器状态、操作人员等非生物学变量引入的系统性偏差,导致同一生物学条件在跨批次时产生虚假的差异。

1.2 批次效应的来源

你想想看,一个高通量实验流程里,有多少环节可能引入批次?我列几个最常见的,全是自己踩过的坑。

来源类别 具体因素 我见过的问题
样本收集与处理 收样日期、保存方式、RNA提取时间 同一批次样本隔了三个月才提RNA,降解程度不一样
实验试剂 试剂批号、引物批次、酶批次 换个批号的逆转录酶,表达量直接差了两倍
仪器设备 测序仪、芯片扫描仪、qPCR仪 两台测序仪的cluster密度不同,影响定量
操作人员 不同技师的加样手法、操作习惯 曾经换了个实习生,结果文库浓度全线偏低
环境条件 温度、湿度、空气洁净度 夏天做的实验,背景噪声普遍偏高
数据采集与分析 不同版本的软件、不同的分析流程 用新旧两个版本的bcl2fastq,产出序列质量分布不同

这些来源往往不是独立的。一个批次里,可能多个因素同时变化。比如你换了操作人员,可能连带试剂批号、仪器校准时间都变了。这就让批次效应变得更复杂。

1.3 批次效应的影响

批次效应一旦存在,它的破坏力还是很明显的。我做过的项目里,有几次就是因为没检查批次,导致分析结论完全反了。

  • 增加噪声,降低统计检测力:批次效应相当于给数据加了一层系统噪声,让真实的生物学差异更难被检测出来。
  • 引入假阳性差异:如果批次与感兴趣的分组恰好相关(比如对照组全在第一批,处理组全在第二批),那你检出的差异里可能大部分是批次效应。
  • 聚类/降维后的虚假分群:PCA、t-SNE、UMAP里,样本按批次聚集,而不是按生物学条件。这是最直观的坑,我当年就是被这个坑的。
  • 降低模型泛化能力:用包含批次效应的数据训练分类器,模型可能学到的是批次特征,而不是生物学特征,换个新数据就失效。
避坑指南:我曾经有一个项目,两个批次的样本数量不均衡,第一批只有3个对照组,第二批有10个处理组。结果第二次分析时全批次处理,发现处理的效应特别显著。后来加上批次因子重新建模,那些显著差异几乎全消失了。所以,批次与实验设计的交叉是最大的陷阱。

1.4 批次效应的可视化识别

了解概念后,下一步就是如何发现批次效应。我习惯先用简单的图快速扫一眼。

比如,我们有一批数据,想知道有没有批次效应。可以用箱线图或密度图,按批次着色,看表达量分布是否一致。

library(ggplot2)
# 假设 dat 是表达矩阵,batch_info 是批次标签
ggplot(dat, aes(x = batch, y = value, fill = batch)) +
  geom_boxplot() +
  theme_classic()

同一条件下,如果不同批次的箱线图位置、离散程度差异很大,那就要警惕了。

另一个更直观的方法是PCA。将样本投影到前两个主成分上,用颜色标记批次。如果批次分的很开,说明有显著的批次效应。

pca_res <- prcomp(t(expr_matrix), scale. = TRUE)
pca_df <- data.frame(PC1 = pca_res$x[,1], PC2 = pca_res$x[,2], batch = batch_info)
ggplot(pca_df, aes(x = PC1, y = PC2, color = batch)) +
  geom_point(size = 3) +
  stat_ellipse() +
  theme_minimal()

这两种图,我每次拿到新数据都会先跑一下,心里有个数。

小技巧:如果样本数少,可以用heatmap画样本间的相关系数矩阵,按批次分组。批次效应强的样本在热图上会形成明显的色块。

1.5 批次效应的类型:一致性与不一致性

批次效应不是只有一种形态。我个人习惯把它分成两类,方便后续选择处理方法。

  • 一致性的批次效应:所有基因/特征在批次间受到相同方向的偏移。比如第一批整体表达量偏高20%。这种用简单的标准化(比如分位数标准化)就能部分消除。
  • 不一致性的批次效应:不同基因受批次影响的方向和程度都不同。有的上调,有的下调,甚至不同批次间的差异模式都不一样。这种更麻烦,需要更复杂的统计方法(比如ComBat、limma的removeBatchEffect)。

实际数据中,大部分是不一致性的。我遇到过最糟的一次,前100个高表达基因在批次1里比批次2高,后100个却是低的……简直没法直接对比。

1.6 本章知识体系

下面这张图的框架,是我自己理解批次效应的核心逻辑。从概念出发,分清楚来源和影响,再落到可视化检查方法,形成闭环。

批次效应知识体系框架 批次效应 样本与处理 试剂与仪器 操作与环境 数据分析 噪声增大 假阳性/假阴性 聚类偏差 模型失效 可视化识别 来源 —— 批次效应 —— 影响 —— 可视化检查,形成闭环