批次效应概述
咱们做组学数据分析的,只要样本一多,批次效应迟早会找上门。我早些年接过一个转录组项目,40个肿瘤样本分两批测序,结果第一批跟第二批的差异基因全集中在线粒体相关通路——后来一查,是两批试剂盒的提取效率不一样。嗯,从那以后,我再也不敢把批次效应当小事了。
什么是批次效应
批次效应说白了,就是同一种实验处理下,不同批次获得的测量数据之间存在系统性偏差。它不是随机噪声,而是一种系统性误差,跟你研究的生物学变量没关系。
举个最简单的例子:你今天跟明天在同台机器上跑同一个对照组样本,得到的表达值可能会差出两三倍。你想想看,如果这个差异被当成“差异表达基因”,那结论就会完全搞反。
我在项目中遇到过最典型的情况:两个实验室合作做单细胞测序,各自处理自己的样本,然后合并分析。结果聚类图上,细胞不是按类型分开,而是按“来自哪个实验室”分开——这就是批次效应的直观表现。
为什么会出现批次效应
原因可以列出一长串,但归根到底就一句话:实验流程的每个环节都可能引入不一致。我把最常见的几类来源整理了一下:
| 来源类别 | 具体因素 | 典型表现 |
|---|---|---|
| 试剂批次 | 不同批号的裂解液、酶、抗体 | 表达量整体偏移 |
| 仪器设备 | 不同测序仪、不同流式细胞仪 | 信号基线漂移 |
| 操作人员 | 不同实验员的手法和习惯 | 个别样本异常波动 |
| 时间因素 | 不同月份、不同季节的温湿度 | 趋势性偏移 |
| 样本处理 | 冻融次数、提取方法不同 | 低质量样本聚集 |
我曾经踩过一个坑:做ChIP-seq时,前三个样本和后四个样本的峰图长得完全不像。排查了两天才发现,前三个是用超声破碎仪Bioruptor处理的,后四个的手动换成了Covaris——两家的能量输出曲线差太多了。自那以后,我习惯在实验记录里把试剂批号、仪器型号、操作者都记下来,哪怕当时觉得“没必要”。
批次效应对数据分析的影响
影响主要集中在三个层面:
- 统计检验膨胀:批次信号被误判为生物学差异,导致假阳性暴增。
- 聚类混淆:样本按批次成团,无法反映真实分组。
- 生物学结论错误:找出的标志物其实是批次标记,验证时全翻车。
我自己做过一个对比实验:同一套RNA-seq数据,不做批次矫正直接差异分析,得到1183个差异基因;加上批次作为协变量后,只剩341个。你说哪份更可信?
你想想看,如果批次效应跟生物学分组刚好混杂(比如对照组全是第一批、处理组全是第二批),那后果就更严重了——你可能根本检测不到任何真实差异,因为批次信号完全淹没了生物学信号。这一点在临床队列中特别要命。
为了方便理解,我给你画了一张概念图:
你看,批次效应从实验流程中的任何一个裂缝钻进来,最后却会把这些噪音放大成“看起来像真事”的信号。我常说,不控批次的差异分析相当于在沙地上盖楼。
那怎么快速发现它?我自己常用的一个技巧:画表达量的密度图或箱线图,按批次着色。如果不同批次的分布明显错开,那就是警报。下面是个简单的R代码例子:
library(ggplot2)
# 假设 counts 是表达矩阵,batch 是批次向量(1/2)
df <- data.frame(expr = colMeans(counts), batch = factor(batch))
ggplot(df, aes(x = batch, y = expr, fill = batch)) +
geom_boxplot() +
labs(title = "Check batch effect: mean expression per sample")
嗯,看到箱线图之间有明显落差就别犹豫,直接进入批次矫正流程。后面几章我会带你掌握几种主流方法,包括ComBat、limma、Harmony这些。不过核心前提是——你得先承认问题存在。
最后说一句:批次效应不可怕,可怕的是你根本没意识到它的存在。我当年交过学费,希望你不需要。