批次效应的类型:系统性批次效应与随机批次效应
好,咱们今天聊批次效应的分类。很多教材一上来就列定义,我反倒觉得不如直接从实际项目中遇到的现象入手。你想想看,处理一批来自不同实验室的RNA-seq数据,为什么有的差异明显得像换了个物种,而有的只是轻微波动?这就是我今天要讲的——系统性批次效应 vs 随机批次效应。
两种效应的本质差别
先说结论:系统性批次效应是有规律、可预测的偏差,而随机批次效应是无规律、不可预测的噪声。我个人习惯把它们比作系统误差和随机误差——但批次效应是特指“因批次不同引入”的那部分。
| 特征 | 系统性批次效应 | 随机批次效应 |
|---|---|---|
| 产生原因 | 试剂批号、仪器校正、操作员手法、温度控制差异 | 样品制备时微量污染、加样枪随机误差、仪器短期漂移 |
| 表现形式 | 同一批次内样品高度相似,批次间出现恒定偏移 | 批次内出现个别离群点,或批次之间波动无固定方向 |
| 是否可建模 | 可以,通常用线性模型或回归校正 | 很难,因为不可重复 |
| 对分析影响 | 严重扭曲主效应,甚至导致假阳性 | 增加方差,降低统计检验力 |
| 常见处理方法 | ComBat、limma、Harmony、回归残差化 | 增加重复、使用稳健统计量、剔除离群样品 |
我在项目中遇到过最典型的例子:一个合作方送来三批芯片数据,第一批和第三批完全正常,第二批所有样本的表达量整体偏低20%。一看实验记录——第二批用的反转录酶是另一个厂家的。这就是系统性批次效应,用一个批次变量就能解释。
系统性批次效应:你最该警惕的"隐形器差"
系统性批次效应的核心特征是恒定偏移。什么意思?同一批次的样本,受到同样的额外影响;不同批次的样本,受到的影响不同但稳定。举个例子:
- 试剂批号不同:同一种蛋白酶,A批号的活性是B批号的1.3倍
- 仪器校准差异:测序仪A的荧光检测增益比测序仪B高5%
- 操作员手法:同一个protocol,不同人移液时吹打次数不同
- 环境因素:实验室A的温度恒温22°C,实验室B在下午会升高到28°C
说白了,只要这些因素在同一批次内保持一致、在批次间不一致,就可能在数据里刻进去一个“批次号”的印记。我建议你拿到数据第一步,先做PCA或者t-SNE,点开颜色按批次标——如果看到同一批次的点抱成一团,别急着高兴“聚类很好”,先怀疑是不是系统性批次效应。
嗯,这里要注意一点:系统性批次效应不一定都是“坏事”。如果你要研究的生物学效应恰好和批次完全混杂(比如:处理组全在批次1,对照组全在批次2),那恭喜你——你完全无法区分是生物差异还是批次差异。这是实验设计中最致命的错误之一。
如果处理变量和批次变量完全共线(例如所有处理组样品在一个批次,对照组在另一个批次),任何统计学方法都无法校正这个批次效应。设计阶段一定要做“批次平衡”——每个处理条件都必须分布到所有批次中。
# 错误设计:混杂
批次1:处理1、处理1、处理1
批次2:对照、对照、对照
# 正确设计:平衡
批次1:处理1、处理1、对照、对照
批次2:处理1、处理1、对照、对照
随机批次效应:更难对付的"白噪音"
随机批次效应不像系统性效应那样有个“常数偏移”。它更像是每个样本独立地受到了一些小扰动,这些扰动在批次内和批次间都没有固定模式。举个例子:
- 某次提取RNA时,个别样品发生了微量降解
- 移液器在吸取某管时出现了随机气泡
- 测序仪某个lane的簇密度略微偏低
- 某个96孔板边缘的蒸发效应导致浓度变化
你想想看,这些因素没法用一个“批次”标签来建模,因为它们不是批次内所有样本共有的。我曾经在一个单细胞转录组项目中,同一个文库的两个泳道,其中一个出了0.1%的桥接扩增偏差——导致那个泳道里几千个细胞的UMI计数整体偏低了3%。这种偏差太小,你肉眼都看不出来,但它在后续差异分析里会引入额外的噪声方差。
随机批次效应的主要危害是降低统计功效。什么意思?本来你需要的样本量是每组6个,因为随机批次效应导致组内方差变大,你可能需要12个才能检测到同样大小的效应。所以我经常说:实验设计时,多留10%~20%的余量,用来“抵抗”随机批次效应。
把数据按样本处理顺序(或批次顺序)排列,画一个折线图看某个关键指标(比如内参基因的表达量)。如果看到明显的“阶梯状”跳变,大概率是系统性批次效应;如果看到的是毫无规律的上下波动,那就更可能是随机批次效应。
我曾经在某个甲基化芯片项目中这么看过:折线图在批号切换处几乎垂直上升了10%,赶紧联系厂家确认——果然是那个批号的bisulfite转化效率变了。
一张图理清两种效应的关系
下面这张SVG结构图,把两种批次效应放在同一个维度上对比。你看:系统性批次效应像是“平移”了整组样本,而随机批次效应则是让各个样本在原始位置附近抖动。实际数据中往往是两者混合——既有批次间的系统偏移,又有样本内的随机噪声。
实战中如何快速判断类型?
我个人有一套三步走流程,在多个项目中验证过,分享给你:
- 做PCA,用批次着色。如果看到同一批次的样本在PC1/PC2上明显聚团,且团之间距离远大于团内距离,高度提示系统性批次效应。如果团之间重叠但本应聚集的处理组却被分散了,可能主要是随机效应。
- 计算批次内方差占比。用混合效应模型或者简单的ANOVA,看“批次”这个因素能解释多少方差。如果超过10%,就警觉了。
- 做差异表达(处理vs对照)时加上批次协变量。对比加和不加批次的结果——如果差异基因数目变化很大,说明系统性批次效应在干扰;如果变化很小只是p值略有波动,那主要是随机效应。
# 一个R语言快速诊断示例
library(limma)
# 假设expr是表达矩阵,batch是因子
# 第一步:不加批次
design0 <- model.matrix(~ treat)
fit0 <- lmFit(expr, design0)
# 第二步:加批次
design1 <- model.matrix(~ treat + batch)
fit1 <- lmFit(expr, design1)
# 比较:topTable结果中logFC和p值的差异
# 如果很多基因的logFC符号都变了,说明批次效应很强
一个容易被忽略的陷阱:混合型批次效应
现实中的数据哪会那么乖地只属于某一类?大部分情况是混合型。我遇到过最头痛的案例:一个多中心测序项目,批次A和批次B之间存在约5%的系统性偏移(所有基因上调),但同时批次B内部有两个样本因文库构建失败产生了强烈的随机离群值——它们的表达谱跟同批次其他样本都完全不一样。
这种情况下,先处理系统性部分(用ComBat做第一轮校正),再检查残差中是否存在离群样本(用Cook距离或稳健马氏距离),去掉或winsorize掉那些随机离群点。我曾经因为没做第二步,导致后续GSEA分析富集出两条根本不是生物相关的通路——全是被那俩离群样本带歪的。
处理批次效应前,先通过可视化和方差分解判断类型。系统性效应用ComBat/limma做线性校正;随机效应靠增加试验重复、使用稳健统计量来“吸收”。两种策略不能互换——硬拿随机效应的方法去治系统性效应,校正不彻底;拿系统性校正方法去硬处理随机效应,反而可能引入假象。
好了,这一章的内容就是这些。记住分类的目的不是为了背概念,而是为了帮你选对工具、设计好实验。后续的章节里,我会详细讲解每种类型对应的具体校正算法——但前提是你现在能准确判断,你手里的数据到底被哪种效应污染了。