第3章:ComBat方法概述

这一章我们聊聊ComBat这个方法到底是怎么回事。很多做质谱的朋友第一次听到ComBat时,会以为它是什么新出的化学试剂——说实话,我第一次接触这名字时也愣了一下。其实它是个统计方法,全称是Combating Batch Effects,直译过来就是“对抗批次效应”。

ComBat最早不是为质谱数据设计的,它诞生于基因表达芯片时代。后来组学技术发展了,蛋白组和代谢组的研究者发现,自己遇到的批次问题跟当年芯片领域简直一模一样。于是ComBat就这样“跨界”了。我个人觉得,这是生物信息学里最成功的方法迁移案例之一。

3.1 ComBat的发展历程

这事得从2007年说起。约翰霍普金斯大学的Jeff Leek团队发表了ComBat的原始论文。当时基因表达芯片正火,但有一个问题让所有人头疼:不同批次、不同实验室、不同时间做的芯片数据,根本没法直接比较。

我早年做过一批芯片数据分析,两个批次的结果在PCA图上直接分成了两团,跟生物学差异一毛一样。我当时差点以为发现了什么新的亚型——后来查记录才发现,两批数据用了不同批号的试剂。嗯,这就尴尬了。从那以后我对批次效应就有了心理阴影。

ComBat最初被用来校正基因芯片数据。后来的发展大致经历了三个阶段:

阶段 时间 主要应用领域
诞生期 2007-2010 基因表达芯片
扩展期 2011-2016 RNA-seq、甲基化芯片
质谱期 2017-至今 蛋白组、代谢组质谱数据

到2020年以后,我几乎每做一个质谱项目都会试试ComBat。不管是用TMT标记的蛋白组,还是LC-MS的代谢组,只要涉及到多批次数据合并,ComBat几乎成了标准流程。

3.2 为什么质谱数据需要ComBat

你想想看,质谱仪器本身就有波动。今天和明天跑的同一批样品,峰强度可能差30%。如果换成不同实验室、不同质谱平台,差异就更大了。但偏偏科研设计中,我们又经常需要把多批次数据放在一起分析。

典型的场景包括:

  • 长期队列研究:样本采集跨度几个月甚至几年,需要分批上机
  • 多中心合作:不同实验室的数据需要汇总分析
  • 技术更新:仪器升级后新旧数据需要合并
  • 大规模筛查:一个批次跑不完所有样本

我在一个代谢组项目中遇到过这种情况:三个批次的质控样品,其内标的RSD在批次内都在10%以内,但跨批次比较时RSD直接飙到了40%。如果不做校正,后面找生物标志物基本就是缘木求鱼。

3.3 ComBat的基本假设

任何统计方法都有自己的假设前提,ComBat也不例外。理解这些假设很重要,因为假设被违背后,校正效果会很差。

ComBat的基本假设有三个:

  1. 大多数特征是技术无关的:大部分代谢物或蛋白在不同批次间的真实丰度没有系统性差异
  2. 批次效应是加性/乘性的:批次效应可以分解为位置偏移和尺度变化
  3. 批次间有共享特征:不同批次中相同特征的生物学变异程度是可比的
重要提醒:这些假设在实际数据中不是总能满足。比如当批次与生物学分组完全混淆时,ComBat会把生物学差异误当成批次效应给校正掉。这是个常见坑,我曾经吃过这个亏。

说白了,ComBat假设批次间的大多数差异都来自技术因素,而不是生物学因素。如果你实验设计本身就让批次和分组绑在一起,那ComBat也救不了你。

3.4 ComBat的核心思想

ComBat的核心思想可以用一句话概括:利用经验贝叶斯框架,从数据中估计出批次效应的参数,然后把这些效应从原始数据中剥离掉。

具体来说它做了三件事:

  • 第一步:标准化。对每个特征,减去整体均值,再除以整体标准差。这一步把所有特征都拉到相似的尺度上。
  • 第二步:估计批次参数。对每一个批次,估计它的位置参数(均值偏移)和尺度参数(方差变化)。这一步用到了经验贝叶斯——说白了就是“借力”,让信息在不同特征之间共享。
  • 第三步:校正。用估计出的参数反向修正原始数据,把批次效应从数据中“减掉”。
ComBat 核心流程 原始多批次数据 (特征×样本矩阵) 特征级标准化 (减去均值,除以标准差) 经验贝叶斯估计 (位置参数 + 尺度参数) 批次效应校正 (从数据中剥离批次效应) 校正后数据 (批次效应被移除,可以合并分析)
个人经验:ComBat的“借力”机制很重要。当某个特征在某个批次内样本量很少时,单独估计它的批次参数会很不稳定。经验贝叶斯通过借用其他特征的全局信息,让这些不稳定特征也能得到合理的估计。这个设计很巧妙,我记得第一次理解这个思想时觉得特别优雅。

3.5 ComBat与质谱数据的适配性

为什么ComBat在质谱数据上表现好?我总结了几个原因:

  • 质谱数据的批次效应往往是系统性的:同一特征在不同批次中的变化趋势一致,这正好符合ComBat的设计
  • 特征数量大:蛋白组和代谢组通常有成百上千个特征,经验贝叶斯需要这种“大特征量”的环境才能发挥优势
  • 标准化操作有利于质谱数据:质谱数据本身变异度大,标准化后可以更好地估计批次参数

一个关键区别需要留意:

基因芯片时代用的是log2强度的数据,质谱时代通常用的是log2转化的峰面积或丰度值。操作上是一致的,但质谱数据的缺失值问题更严重。未经处理的缺失值会干扰ComBat的估计过程。这个后面我会专门讲如何处理。

不过ComBat不是万能的。它对实验设计很敏感。如果批次和分组完全重合——比如病人都在批次1,对照都在批次2——ComBat就无法区分批次效应和生物学效应。这种情况,我建议你先重新设计实验,再考虑校正方法。

还有一点要记住:ComBat校正的是统计意义上的批次效应,它不能解决由于样本处理不一致带来的系统偏差。如果你的第一批样本放在-80℃,第二批样本在-20℃放了三个月,那ComBat也帮不了你。

3.6 什么时候不该用ComBat

这些年我见过不少ComBat被误用的案例。下面几种情况,我建议你慎重:

情况 为什么不行 替代方案
批次与分组完全混淆 无法区分批次效应和生物学效应 重新设计实验,或放弃合并
单一特征只有一个批次有数据 无法估计跨批次参数 剔除该特征,或手工补齐
数据缺失率超过50% 估计不稳定,可能引入新偏差 先做缺失值插补,再用ComBat
样本量极不均匀 小批次估计不可靠 合并小批次,或用其他方法

我记得有次在跨中心数据合并时,一个中心只有3个样本,另一个中心有200个。ComBat跑完以后,那3个样本的数据几乎被拉到了全局均值的附近,完全失去了原有特征。事后分析,这其实就是经验贝叶斯“借力”借过头了——小批次的信息完全被大批次覆盖掉了。

避坑指南:ComBat不是数据预处理的第一步,而是最后一步。我建议你在完成缺失值处理、数据转换、质量控制之后,再进行批次校正。否则校正的效果会被前面的步骤影响。

好了,ComBat的方法论基本就这些。你看,它不是什么高深莫测的东西,本质上就是一个用统计方法拆掉批次“标签”的过程。