3. 实验设计注意事项:分组设置、生物学重复、测序深度、批次效应
很多同学做项目的时候,往往拿到数据就直接开跑流程。结果后面排查问题,发现最根源的坑,其实都埋在实验设计那一步。
物种丰度分析,说白了就是用数据去推测真实的微生物群落结构。如果你的实验本身有偏差,那后面再怎么折腾算法,也救不回来。
今天我就把这四个关键点掰开了讲。都是我在项目里踩过的坑和总结的规律。
3.1 分组设置:别让比较失去意义
分组是实验的骨架。分组设错了,后面的所有结论都站不住。
三种常见分组模式:
- 简单双组比较:病例 vs 对照。最常见,也最容易被忽视样本量。
- 多时间点纵向设计:同一个体在干预前、干预中、干预后分别采样。这种设计统计效力高,但样本损耗率也高。
- 多因素交叉分组:比如不同处理 × 不同基因型。我建议这种设计预算至少留出 20% 的冗余。
个人经验:我做肠道菌群项目时,客户非要设 5 个分组,每个组只有 3 个样本。结果 PCA 图上组间差异还没组内差异大。从那以后,我一直坚持 “组别数量 × 生物学重复 ≥ 20” 的底线。
分组设计自查清单:
- 对照组设置合理吗? 空白对照、阴性对照、阳性对照,一个都不能少。
- 混杂变量有没有控制? 年龄、性别、饮食、用药史——这些因素不控制,分组就白做了。
- 组别数量与样本量的平衡:组别越多,每组的样本量就越少。你需要提前算好统计效力。
核心原则:分组设计要回答一个清晰的生物学问题。不要为了分组而分组。
3.2 生物学重复:不是你想象的那么简单
很多新手以为,重复就是多测几个样。嗯,其实不是这么回事。
生物学重复 ≠ 技术重复。你看这个表格:
| 重复类型 | 定义 | 反映的变异 | 是否可用于统计检验 |
|---|---|---|---|
| 生物学重复 | 独立来源的样本(如不同个体) | 个体间真实的生物学变异 | 是 |
| 技术重复 | 同一份样本的多次测定 | 仪器或实验操作的随机误差 | 否 |
你想想看,如果你的“重复”全是技术重复,那算出来的 p 值再小也没用。它只能说明你的仪器重复性好,跟真实的生物学差异没半毛钱关系。
重复数量的经验法则:
- 常规 16S 扩增子测序:每组 ≥ 6 个生物学重复。我曾经做过一个模拟实验,3 个重复时差异 OTU 的检出率只有 40%,增加到 6 个重复后能到 80%。
- 宏基因组测序:因为是全基因组鸟枪法,覆盖度更高,每组 ≥ 4 个重复勉强够用,但我个人仍推荐 6 个。
- 极端样本(如低生物量环境):建议每组 ≥ 10 个重复。为什么?低生物量样本的随机波动非常大,重复少了根本看不出来趋势。
避坑指南:我曾经接过一个项目,对方送了 20 份粪便样本,以为够了。结果一查,这 20 份样本是用同一种饲料喂了 20 只老鼠,而且是同一笼养的。这根本不是真正的生物学重复——是 伪重复。同一笼老鼠的肠道菌群高度相似,不能视为独立样本。所以采样时一定要保证个体来源的独立性。
3.3 测序深度:花多少钱,办多少事
测序深度,简单说就是每个样本得到了多少条序列。深度不够,物种丰度的估算就偏差大;深度超标,边际效益递减,纯属浪费预算。
测序深度与物种检出率的关系:
- 这是我做了十几个项目后总结的规律。对于 16S V3-V4 区,深度在 3 万条序列/样本时,主要物种基本都能检出了。
- 当深度超过 5 万条后,新增的 OTU 基本都是稀有物种(相对丰度 < 0.01%)。
- 对于 宏基因组,建议每个样本至少 5 Gb 数据量(约 3000 万条 150 bp 双端序列)。
实战建议:在做正式实验前,先做 预实验 + 饱和曲线分析。取 2-3 个代表性样本,测到不同深度,画出物种累积曲线。当曲线接近平坦时,那个深度就是你的最佳成本点。
饱和曲线分析的半自动化脚本(R 语言示例):
library(vegan)
library(ggplot2)
# 假设 otu_table 是 OTU 丰度矩阵(样本为行,OTU 为列)
rarefaction_curve <- rarely(otu_table, sample = seq(0, max(rowSums(otu_table)), length.out=20), step = 1000)
# 绘制曲线
rarecurve(otu_table, step = 1000, col = "steelblue", lwd = 2,
xlab = "测序深度(序列数)", ylab = "观测到的 OTU 数量")
不同深度的取舍原则:
| 场景 | 推荐深度(16S) | 推荐深度(宏基因组) | 注意事项 |
|---|---|---|---|
| 粪便/肠道样本 | 3-5 万条/样本 | 5-10 Gb/样本 | 肠道菌群多样性高,深度不够会漏掉稀有物种 |
| 土壤/环境样本 | 5-10 万条/样本 | 10-15 Gb/样本 | 环境样本的物种复杂度最高,建议加码 |
| 体液/低生物量样本 | 2-3 万条/样本 | 2-5 Gb/样本 | 样本本身序列量就少,不要盲目增深——增加重复比加深更有效 |
血泪教训:我见过一个项目,把 96 个样本混在一起测了 2 条 lane(一条 lane 约 2 亿条 reads),结果每个样本平均只有 200 万条 reads,深度严重不均。最后数据分析时不得不剔除 30% 的低深度样本。所以 宁可少测一些样本,也要保证每个样本的深度达标。
3.4 批次效应:最常见又最隐蔽的坑
批次效应,说白了就是不同实验批次引入的系统误差。它可能来自不同的试剂批号、不同的操作员、不同的测序运行,甚至不同的季节。
批次效应有多严重? 我有个项目,第一批和第二批样本隔了半年才测。PCA 图上,第一批样本全部集中在左上角,第二批全部在右下角。什么分组差异都被掩盖了。我花了两周做校正,效果还是不理想。
如何预防批次效应? 这是最好的策略:
- 在实验设计阶段就标识批次:把分组样本随机分配到不同批次中,不要A组全在第一批,B组全在第二批。这叫“随机化分配”。
- 保留部分样本做桥梁:在第一批和第二批中都加入相同的对照样本(比如标准菌群混合物),后期做校正的锚点。
- 尽量在同一次测序运行中完成所有样本:如果样本量实在大,分多批次时一定要做好层间对照。
常见的批次设计方案对比:
| 设计方案 | 描述 | 批次效应风险 | 统计校正难度 |
|---|---|---|---|
| 完全随机分组 | 所有样本随机分配到各批次 | 低 | 容易 |
| 分层随机分组 | 先按分组分层,再在各层内随机分批次 | 中 | 可接受 |
| 批次嵌套分组 | 一个批次只包含一个分组 | 极高 | 几乎不可校正 |
值得注意的是,即使做了随机化,批次效应仍可能残留。我一般会使用 limma::removeBatchEffect 做初步校正,然后用 sva::ComBat 做更精细的调整。但前提是你有足够的样本量来估计批次效应。
一句话总结:实验设计阶段不控制批次效应,后期数据分析阶段几乎无解。所以我建议每个项目在开始测序前,一定把 批次记录表 做好。包括:测序日期、试剂盒批号、操作员、仪器编号。这些后面做校正都能用上。
最后补一句:这个 SVG 的流程就是我做每个项目前都会过一遍的检查清单。分组、重复、深度,三者必须一起考虑,不能孤立的看。批次效应更是贯穿全程的幽灵,设计阶段就留好冗余,后面数据分析环节能省掉 80% 的麻烦。