随机化基本概念:简单随机化 vs 区组随机化
随机化的底层逻辑
做实验设计,第一个绕不开的词就是“随机化”。
很多人觉得随机化就是“随便分一分”,其实不是。随机化的核心目的,是为了消除那些我们看不见、也控制不了的混杂因素带来的偏倚。说白了,就是让两组数据除了处理因素不同,其他条件在统计上差不多。
我刚开始做生物统计时,有一次接手一个药效评价实验。实验者直接按动物体重从轻到重分两组。结果呢?体重轻的全在对照组,体重重的全在给药组。最后数据分析发现给药组肝酶指标异常高,但那是肥胖带来的代谢问题,不是药物毒性。一次“分组不平衡”,浪费了整整一轮实验。
从那以后,我对随机化的敬畏感就上来了。你想想看,如果分组时不把随机化做扎实,后面的统计分析再花哨也没用,根基就是歪的。
简单随机化:抛硬币式的分配方式
定义:每个受试单元独立地、以固定概率(通常1:1)被分配到各组。
实现方式很简单。比如抛硬币、抽签、或者用随机数发生器。每次分配跟之前的分配结果没有任何关系。
- 优点:实现简单,操作便捷,理论上没有预测风险。
- 缺点:样本总量较小时,分组结果可能严重失衡。
为什么会这样?因为简单随机化每次分配都是独立的,不会“补”前面的不平衡。如果样本量足够大(比如几百上千例),这种失衡会逐渐被均摊掉。但当样本量只有几十甚至十几时,失衡风险就大到不可忽视。
下面是我常用的一个简单随机化操作示例(R语言):
# 简单随机化:30只小鼠,1:1分配
set.seed(20231001)
n <- 30
group <- sample(c("Control", "Treatment"), size = n, replace = TRUE)
table(group)
跑一次你可能得到 16:14,再跑一次可能 18:12。不稳定,这就是简单随机化的“脾气”。
区组随机化:让分组更“工整”
定义:把受试单元分成多个小批次(区组),每个批内按均衡比例分配。例如每4个受试单元为一个区组,每个区组内2个分到对照组、2个分到治疗组。
这么做的目的很明确:保证在任何阶段截断实验,各组样本量都不至于偏离太远。
- 优点:分组平衡性好,尤其适合中期分析或分阶段入组的试验。
- 优点:可以结合分层因素使用,进一步提高均衡性。
- 缺点:如果区组大小固定且最小区组被知晓,存在预测风险。
避坑指南——我曾经踩过的一个坑:一个实验里,我用了固定区组大小4,结果入组护士慢慢摸到了规律——看到前面3个人都分到对照组,她就猜第4个肯定是治疗组。那怎么办呢?解决方案是用随机区组大小。比如区组大小在2、4、6之间随机选,外人很难猜出规律。
下面是区组随机化的常见操作示例:
# 区组随机化:区组大小4,每组2个
library(blockrand)
set.seed(20231001)
block.def <- blockrand(n = 30, id.prefix = "SUB", block.size = 4,
randomization = .5,
strata = c("Center1", "Center2"))
block.def
这段代码在每个中心内分别生成区组随机序列,出来之后就可以直接用于入组分配。
核心区别一览
| 维度 | 简单随机化 | 区组随机化 |
|---|---|---|
| 概念 | 每次分配独立,不依赖前面结果 | 按批次均衡分配,批次内比例固定 |
| 分配方式 | 抛硬币、随机数表 | 区组内排列组合 |
| 分组平衡性 | 小样本下易失衡 | 控制良好,任何阶段截断都较平衡 |
| 操作复杂度 | 低 | 中等,需事先定义区组 |
| 预测风险 | 低 | 固定区组大小存在泄露风险 |
| 适用场景 | 大样本、简单试验 | 小样本、中期分析、多中心试验 |
质控视角下的选择思路
从质控角度讲,我个人更倾向于对随机化过程做“双重保险”。
第一层:选择对的随机化方法。
第二层:用中心化随机系统或密封信封法,防止人为干预。
另外,我做质控审查时一定会检查随机序列的生成过程。比如看随机数种子的记录是否完整、是否存在人为分组痕迹、区组列表是否被提前生成。这些细节一不小心就会出问题。
下面这张图帮你理清两种随机化的核心逻辑对比: