4. ComBat 的数学原理(一):模型设定
说白了,ComBat 的数学原理并不复杂。它的核心就是一个线性混合模型。我在刚接触这个工具时,总觉得要理解它得啃一堆统计学教材。后来发现,你只要抓住它假设了什么、拆解了什么,就能明白它为什么能校正批次效应。
这一章,我们先不讲怎么算,先讲模型是怎么设定的。
4.1 为什么要假定正态分布?
你可能会问:基因表达数据凭什么一定要服从正态分布?
嗯,这里要注意。ComBat 不是要求原始数据是正态分布,而是假定在校正后、在给定条件下,表达量的残差服从正态分布。这其实是线性混合模型的常规操作。
- 空间转录组的基因表达值是连续型数值(UMI 计数或 log-normalized 值)。
- 线性模型天然假设误差项服从正态分布(高斯分布)。
- ComBat 用最大似然估计(MLE)来求解参数,而 MLE 在高斯假设下计算最方便。
我曾经遇到过一个项目,用户直接用原始 UMI 计数值跑 ComBat,结果校正效果很差。后来我让他先做 log 归一化,让数据分布更接近正态,效果立刻就对了。所以,预处理阶段一定要让数据“看起来”像正态分布。
4.2 模型公式拆解
ComBat 的模型设定长这样:
Y_{ijg} = α_g + X_i β_g + γ_{ig} + δ_{ig} ε_{ijg}
这个公式,说白了,就是把观察到的基因表达值 Y 拆成了几部分。我们来一个一个看:
| 符号 | 含义 | 类型 |
|---|---|---|
Y_{ijg} |
第 i 批次、第 j 样本、第 g 基因的表达值 | 观测值 |
α_g |
基因 g 在所有批次中的总体均值 | 固定效应 |
X_i β_g |
生物学协变量(如细胞类型、处理条件)的影响 | 固定效应 |
γ_{ig} |
批次 i 对基因 g 的加性偏差(Additive Batch Effect) | 随机效应 |
δ_{ig} |
批次 i 对基因 g 的乘性偏差(Multiplicative Batch Effect) | 随机效应 |
ε_{ijg} |
随机误差,服从 N(0, σ²_g) | 误差项 |
我个人习惯把这个公式记作:Y = 基准均值 + 生物学变异 + 批次加性偏移 + 批次乘性缩放 * 随机噪声。
你想想看,如果没有批次效应,模型会退化成简单的线性回归:
Y_{ijg} = α_g + X_i β_g + ε_{ijg}
ComBat 就是多引入了两个项来吸收批次带来的偏差和方差变化。
4.3 加性效应 vs 乘性效应
这里我想重点讲一下 γ 和 δ 的区别。
- γ(加性效应):某个批次的基因表达整体偏高或偏低。比如批次 A 的测序深度不够,所有基因的表达量都偏低了一个常数。这就是加性偏差。
- δ(乘性效应):某个批次的基因表达波动更大或更小。比如批次 B 的技术噪声更大,导致基因表达的方差整体被放大了。这就是乘性偏差。
我在项目中遇到过这样的情况:两个批次的数据均值一致,但合并后方差突然变大,聚类效果很糟糕。这就是典型的 δ 问题。ComBat 能同时处理这两个问题,这也是它比简单的均值中心化(只处理 γ)更好用的原因。
par.prior=FALSE 的情况)。
4.4 随机效应的假定
ComBat 把批次效应 γ_{ig} 和 δ_{ig} 当作随机效应,而不是固定效应。这意味着模型假设:
- 每个批次的 γ 是从同一个分布中随机抽取的。典型假设是
γ_{ig} ~ N(γ_g, τ²_g)。 - δ_{ig} 通常从逆伽马分布中抽取,保证方差为正。
为什么会这样?因为批次是随机因素——你重复做一次实验,批次效应是随机出现的,不是刻意设计的。用随机效应来处理,可以更自然地推广到新批次的数据。
我记得在空间转录组项目中,我们经常有 3-5 个切片批次。如果把批次当作固定效应去拟合,参数会爆炸。用随机效应,模型更简洁,泛化能力也更强。
4.5 模型的可识别性
任何线性混合模型都面临一个基本问题:我们怎么确保拆出来的项是合理的,不会互相混淆?
举个例子,如果批次效应和生物学效应高度相关,模型就可能分不清哪部分是批次、哪部分是生物学真实差异。
ComBat 的解决方案是:
- 先用固定效应部分(α + Xβ)拟合生物学变异。
- 再从残差中估计批次效应 (γ, δ)。
- 最后用最大似然迭代优化所有参数。
这样的两步策略,在一定程度上缓解了可识别性问题。但并不是万能的。如果某一生物学变量(比如疾病组)恰好全部在同一个批次中,那模型会很难分离。这就是所谓的 confounded batch design。
4.6 本章小结:模型设定的骨架
来,我们梳理一下 ComBat 模型设定的核心骨架。这些就是你理解后面推导过程的基石。
- 基因表达 = 生物学信号 + 批次噪声
- 批次噪声拆为加性偏移和乘性缩放
- 假设残差符合正态分布
- 批次效应视为随机效应
- 生物学协变量可以是连续的或分类的
好吧,模型已经搭好了。下面是这一章的框架图,你可以直观地看到各个部分之间的关系。
这张图把模型设定的四个部分串了起来:观测值 Y 被拆解成生物学信号、加性批次偏移、乘性批次缩放和随机误差。记住,γ 和 δ 是随机效应,ε 是误差项。α + Xβ 是固定效应部分。
模型设定到这里就讲完了。后面我们会基于这个设定,推导 ComBat 是怎么估计这些参数的,以及怎么把批次效应从数据中去掉。