3. 批次效应的可识别性分析

在上一节中,我们明确了批次效应既可能来自技术操作,也可能来自样本处理时序。但一个更根本的问题必须先回答:在当前实验设计下,批次效应到底能不能被“识别”出来?如果批次与分组、时间、个体等关键生物学变量完全绑定,那么无论后续用 ComBat、limma 还是 RUV,都无法把两者真正分开。可识别性分析,就是在建模之前先判断“数据里有没有足够的信息把批次和生物学信号拆开”。

一、混杂与共线性:可识别性的第一道门槛

混杂(confounding)指的是批次变量与生物学变量在样本分配上高度关联,导致二者的效应无法独立估计。最典型的情形是:对照组全部在批次 1 处理,处理组全部在批次 2 处理。此时设计矩阵中“批次”列与“分组”列完全相同(或成比例),二者构成完全共线性。数学上,设计矩阵 X 的列向量线性相关,矩阵不满秩,最小二乘解不唯一,任何校正都会把真实的处理效应一并抹掉。

实际中更常见的是部分混杂:批次与分组并非完全一致,但交叉单元格样本极少。例如 2×2 设计中,批次1-对照有 8 例、批次1-处理有 2 例、批次2-对照有 2 例、批次2-处理有 8 例。此时矩阵满秩,理论上可解,但少数单元格的估计方差极大,校正结果极不稳定。判断这类风险,不能只看“是否完全重合”,还要看每个“批次×分组”组合的样本量。

判断原则:若某个“批次×生物学条件”单元格样本数为 0,则该组合不可识别;若样本数 ≤ 2,估计极不稳定,应视为高风险,优先调整实验设计而非依赖算法补救。

二、设计矩阵秩分析:把可识别性变成可计算量

把实验设计写成设计矩阵 X(行=样本,列=截距、分组、批次、协变量),可识别性等价于 X 是否满秩,即 rank(X) 是否等于列数 p。若 rank(X) < p,说明存在线性相关的列组合,对应参数不可估计。实际操作中可用 R 快速检验:

# 示例:分组 group(2 水平)与批次 batch(2 水平)
group <- factor(c(rep("ctrl",10), rep("trt",10)))
batch <- factor(c(rep("B1",5), rep("B2",5), rep("B1",5), rep("B2",5)))
X <- model.matrix(~ group + batch)
qr(X)$rank          # 返回秩
ncol(X)             # 返回列数
# 若 rank < ncol,存在共线性

# 查看交叉表,定位稀疏单元格
table(batch, group)

若 rank(X) 小于列数,可用 alias() 或对 X 做 QR 分解找出哪一列是其余列的线性组合。更实用的做法是直接检查交叉表:任何一行或一列出现 0,或某单元格占比过低,都提示可识别性不足。需要强调的是,秩分析只回答“能否估计”,不回答“估计得准不准”;满秩但单元格极不平衡时,仍需结合方差膨胀因子(VIF)评估共线性强度。经验上 VIF > 5 提示中度共线,VIF > 10 提示严重共线,批次与分组之间的 VIF 应重点检查。

批次×分组交叉设计:可识别性判断 完全混杂(不可识别) 批次1 批次2 对照 10 例 处理 10 例 10 10 批次列 = 分组列,rank(X) < p 校正会抹掉真实处理效应 部分混杂(满秩但高风险) 批次1 批次2 对照 处理 8 2 2 8 rank(X)=p,但稀疏单元格方差大 需查 VIF,谨慎解读校正结果 批次与生物学变量可分离性评估路径 ① 交叉表检查 单元格样本量 ② 设计矩阵秩 rank(X) vs p ③ VIF 共线性 批次↔分组强度 ④ 结论与决策 可校正 / 需重设计 任一环节提示不可识别 → 优先调整样本分配或增加交叉样本,而非强行校正 可识别性不足时,算法只能“分配误差”,无法恢复被混杂掩盖的真实效应

三、可分离性评估:从“能算”到“可信”

满秩只保证参数可估计,不保证批次与生物学信号在数据中真正可分。可分离性评估要回答:批次效应的大小和方向,是否与分组效应纠缠在一起。常用手段有三类。

第一,PCA/PCoA 目视诊断。对表达矩阵做 PCA,用颜色标批次、形状标分组。若同一分组样本按批次分成两簇,且两批次的偏移方向与分组差异方向一致,说明二者高度共线;若批次内分组差异清晰、批次间同组样本重叠良好,则可分离性较好。注意 PCA 只能定性提示,不能替代统计量。

第二,方差分解。用 variancePartition 或线性混合模型,把总方差拆分为批次、分组、残差等成分。若批次解释的方差比例接近甚至超过分组,且二者置信区间重叠,说明可分离性差。示例中若批次贡献 28%、分组贡献 12%,则批次是主导变异来源,校正时必须保留分组项,否则会误伤信号。

第三,代理变量相关。用 svaseq 或 RUV 估计隐藏因子后,计算其与已知批次标签、分组标签的相关性。若某隐藏因子与批次高度相关(|r| > 0.8)且与分组几乎无关,说明它捕捉的是批次;若同时与两者相关,则该因子是混杂的混合体,直接回归会引入偏倚。

实操建议:在正式建模前,先输出一张“批次×分组”交叉表、一个 rank(X) 结果、一组 VIF 值、一张 PCA 图。四项齐全,再决定是否进入校正步骤。这四步成本很低,却能避免绝大多数“校正后差异基因全变”的事故。

四、判断结果如何指导决策

综合以上分析,可形成明确的分级判断:若 rank(X) < p 或存在空单元格,属于不可识别,必须回到实验设计层面,补充交叉样本或重新分配批次,任何算法校正都不可信;若满秩但 VIF > 10 或稀疏单元格样本 ≤ 2,属于弱可识别,可尝试校正但需在结果中报告共线性风险,并用敏感性分析验证结论稳健性;若满秩、VIF 适中、PCA 显示批次与分组方向正交,则属于可识别,可正常进入 ComBat、limma 等校正流程。

需要牢记:可识别性是实验设计的属性,不是算法的属性。算法只能在设计允许的信息范围内做最优分配,无法凭空创造被混杂抹去的信息。因此,本节的分析应前移到实验规划阶段——在样本分配时就尽量让每个“批次×分组”单元格均衡,从源头保证批次与生物学变量可分离,这比事后任何复杂的校正都更可靠。