4. Block Randomization 的概念

4.1 从一次翻车说起

先讲个我自己的教训。

几年前做一组药物处理的细胞实验。12个样本,6个处理组、6个对照组。当时赶时间,直接把所有处理组放在一个批次上机,对照组放在另一个批次。结果差异表达分析跑出来上千个基因,p值调得一个比一个好看。但用 RT-qPCR 验证时,几乎全军覆没。

后来排查才发现——那些"差异基因"根本就是批次间的技术差异,跟药物处理没半毛钱关系。

为什么会这样?

因为处理组和对照组完全被批次混淆了。你根本分不清差异是药物引起的,还是批次不同造成的。这就是典型的批次效应。

那怎么解决?其实早在实验设计阶段,用一个简单策略就能避免——Block Randomization。

4.2 什么是 Block Randomization

Block Randomization,中文叫区组随机化或分块随机化。听起来学术,说白了就是一句话:

先把样本按某些特征分到不同的"块"里,再在每个块内部做随机分配。

拿我刚才那个实验举例。如果当时我把12个样本先按批次分成两个块——每个块里都有3个处理组和3个对照组,再在每个块内随机分配上机顺序。那就算两个批次之间有偏差,每个批次内部的处理组和对照组也是均衡的。差异分析时,批次效应就能被有效剥离。

核心思想: Block Randomization = 分层 + 随机化。层(块)间允许存在差异,但层内差异被最小化。

我习惯用一个表格来对比它和简单随机化的区别:

对比维度 简单随机化 Block Randomization
批次分布 可能严重不均 强制每个块内均衡
操作复杂度 低 中等
对抗批次效应 弱(靠运气) 强(靠设计)
适用场景 无批次效应风险 有明确批次变量
统计检验力 可能被削弱 得到保护

4.3 块大小(Block Size)怎么定

Block Randomization 有个关键参数——块大小。也就是每个块里放多少个样本。

块大小的选择直接影响均衡效果。

先看基本原则。如果实验有 k 个处理组,每组在每个块里放 n 个样本,那块的尺寸就是 k × n。比如两组比较(k=2),每组在每个块里放3个样本,块大小就是6。

# 块大小的计算逻辑
# 2个处理组,每组每块3个样本
block_size = 2 * 3  # = 6

这里有两个常见问题:

  • 块太小:比如块大小等于处理组数(每组只放1个样本)。会限制随机化的灵活性,容易引入偶然偏差。
  • 块太大:块内样本数过多,失去了"分块控制"的意义。块内的变异会变大,批次效应的控制效果下降。

我个人的经验是: 块大小取处理组数的 2~4 倍比较稳妥。既能保证块内均衡,又保留足够的随机化空间。

小技巧: 如果你用固定块大小,而且块大小正好等于处理组数,那最后一个样本的分配其实是被迫的——这会让随机化形同虚设。建议块大小至少是处理组数的2倍,或者使用随机化块大小(交替使用不同尺寸的块)。

还有一个实战细节——要不要用固定块?

固定块:每个块的尺寸一样。优点是简单,缺点是如果实验人员知道块大小,可能会猜到最后一个样本的分配。这在双盲实验中是个隐患。

随机块:在预设区间内随机变换块大小。比如有时用4,有时用6,有时用8。我一般推荐随机块,能有效防止分配被预测。

4.4 Block Randomization 如何阻断批次效应

这块是核心。我用一张图来展示它的工作流程:

Block Randomization 核心原理 全部实验样本 按批次变量分块 块1 (批次1) 块2 (批次2) 块3 (批次3) 每个块内随机分配 处理组 A 处理组 B 各组内批次分布均衡 每个块(批次)内的样本被随机分配到各组 各组都包含来自每个块的样本 → 批次效应被阻断

这张图的逻辑很直白:样本先按批次分块,每个块再独立做随机分配。最后各组都包含了来自所有批次的样本。这样一来,组间差异就不可能被批次差异污染。

我反复强调一个观点: Block Randomization 不是在消除批次效应,而是通过设计让批次效应与实验条件正交。正交了,统计分析就能把批次效应单独剥离出来。

4.5 几种常见的变体

实际项目中,Block Randomization 有几个常用变体。我简单列一下:

  • 置换块随机化:在块内列出所有可能的分配组合,随机选一个。这是最经典的做法,也是许多统计包的默认方案。
  • 分层 Block Randomization:当有多个分层变量时(比如批次+性别+体重),先按多个变量交叉分层,再在每个层内做分配。注意层数别太多,否则可能出现空层。
  • 自适应随机化:根据当前已经分配的情况动态调整后续分配概率,让各组在关键协变量上保持均衡。这个用得较少,但效果很好。

我个人用得最多的是置换块随机化。它实现简单,结果易解释,审稿人也认。

4.6 什么时候该用 Block Randomization

不是所有实验都需要 Block Randomization。我给自己定了几个判断标准:

  • 明确存在批次变量——比如测序批次、试剂批次、操作人员、测量日期。只要这些因素可能影响结果,就该分块。
  • 样本量不够大——如果样本量足够大,简单随机化也能把批次效应"平均掉"。但说实话,生物实验的样本量通常没那么宽裕。
  • 结果对批次敏感——像 RNA-seq、蛋白质组学这类高通量数据,批次效应特别明显。不做分块基本等于给自己挖坑。

避坑提醒: 我曾经在一个项目中把分块变量搞错了——把"测量日期"作为分块变量,但每个日期块内的样本量太少,导致后续统计检验力严重不足。分块变量必须选那些对结果影响大、但又不是实验主效应的因素。而且每个块里要有足够的样本量,至少每组 2~3 个。

总结一下我的经验:只要实验涉及多个批次、多台仪器、多个操作人员或较长的时间跨度,就老老实实用 Block Randomization。多花十分钟做实验设计,省掉后面几个月的排查痛苦。这笔账,怎么算都划算。