3. 质控失败的定义:阈值设定、统计异常检测、可视化初筛
大家好,我是老张。这节咱们聊聊一个挺基础、但实际上特别容易打架的问题——到底什么样的数据算质控失败?
我在刚带项目那几年,经常遇到一个场景:生信的同学拿着报告说“这批数据不行,QC没通过”,但实验的同学一看,“我觉得挺好的啊,就两个离群点丢了可惜”。你想想看,这其实不是数据的问题,是判定的标准没对齐。
所以这一章,我们把质控失败的定义拆开揉碎,分成三块来讲:阈值设定、统计异常检测、可视化初筛。
核心观点:质控失败不是一个二值问题,而是一个多维度决策过程。好的定义,能让你在数据质量和样本保留率之间找到平衡。
3.1 阈值设定:别拍脑袋,要拍数据
阈值设定是最直接、也最容易被人抬杠的做法。我见过不少项目,阈值就是「我觉得3倍标准差就差不多了」。嗯,说实话,很多时候这样也行,但不够严谨。
我个人习惯把阈值分成三层来思考:
- 数据维度阈值:比如测序深度、检测到的基因数、比对率、多肽数量。
- 技术重复阈值:重复样本之间的相关系数、CV值。
- 生物学意义阈值:内参基因的稳定度、spike-in回收率。
举个例子,我在一个蛋白质组学项目里遇到的情况:
# 一个简单的阈值设定逻辑(伪代码)
min_detected_proteins = 3000 # 低于这个数,样本不合格
min_correlation_replicates = 0.85 # 技术重复低于0.85,标记为异常
max_spikein_cv = 0.20 # spike-in CV 超过20%,重做
但你有没有想过,3000 这个数字是怎么来的?不是拍脑袋,是看历史数据的分布。我建议你用
| 阈值类型 | 常用指标 | 我的经验值 |
|---|---|---|
| 数据维度 | 基因/蛋白检出数 | 全平台中位数的70% |
| 技术重复 | Pearson / Spearman | >0.8(转录组)>0.9(蛋白组) |
| 内参/Spike-in | CV 或 回收率偏差 | CV < 0.25,回收率 0.5~1.5 |
注意:阈值不要设得太死。样本量少的时候,5%分位数可能就只有一两个样本。我建议你至少要有 20-30 个历史样本才能设一个靠谱的阈值。
3.2 统计异常检测:让数据自己说话
阈值设定有一个明显的问题:它假设所有样本都是从同一个分布里来的。但实际项目里,样本间差异可能很大——不同批次、不同处理、不同组织类型。
这时候,统计异常检测就派上用场了。说白了,就是在同一批数据内部,找出那些「和大多数样本不一样」的样本。
常用的方法:
- Z-score / IQR 法:最简单粗暴。Z-score 绝对值大于 3 的基本可以怀疑。
- MAD(Median Absolute Deviation)法:比 Z-score 更稳健,不依赖均值和标准差。我比较推荐这个。
- 聚类 + PCA 投影:这一点我们在可视化初筛里会细讲。
举个例子,我之前处理过一个甲基化芯片的数据,样本 QC 用的是控制探针的信号值。正常样本的 median signal 大概在 1000-2000 之间,但有个样本跑到了 3500。Z-score 算出来是 4.2——明显异常。后来查实验记录,发现是杂交温箱温度出了问题。
# MAD 异常检测示例
# 假设 control_probe_signal 是样本的控制探针中位数
signal = [1250, 1340, 1180, 1420, 3500, 1290, 1100]
median_signal = median(signal) # 1290
mad_signal = mad(signal) # 大约 110
# modified Z-score
modified_z = 0.6745 * (signal - median_signal) / mad_signal
# 结果:除了 3500 那个样本得分为 13.5,其他都在 1 以内
嗯,这里要注意:MAD 对数据量的要求其实不高,但样本太少(比如 n < 6)的时候,离群检测的灵敏度会下降。我的经验是至少 8 个样本才用统计方法,少于 8 个,我宁愿多看几张图。
3.3 可视化初筛:肉眼是最好的 QC 工具
做多组学这么多年,我最大的体会是:别只看一个数字,画图看看。统计指标和阈值都好量化,但有些问题只有图能告诉你。
我个人觉得,以下三种图是初筛必备:
- 总表达量箱线图:快速发现某几个样本整体偏低的极端值。
- PCA Score 图:看看样本是否聚成预期的组;注意,如果质控样本(如 pooled sample)都在图外,那基本可以判定失败了。
- 样本间相关性热图:如果有一个样本和其他所有样本的相关系数都低于 0.7,它大概率是有问题的。
一个经典案例:我经手的一个代谢组学项目,统计指标全都 OK(阈值不过、Z-score 不过),但画出来的 PCA 图里,对照组和处理组之间有一条「对角线」——后来发现是采集时间不同导致的批次效应。这种情况,统计检测根本抓不住,但一眼就能在图上看到。
为什么可视化这么重要?我举几个例子你就明白了:
| 检查内容 | 统计检材 | 可视化检材 |
|---|---|---|
| 整体表达量漂移 | 均值、中位数 | 箱线图 / 密度图 |
| 离群样本 | Z-score, IQR | PCA Score 图 |
| 批次效应 | ANOVA, 方差分解 | PCA 或 t-SNE 按批次着色 |
| 技术重复一致性 | 相关系数 | 散点图 / 相关性热图 |
避坑指南:我曾经在可视化时踩过一个坑——PCA 图里有两个离群样本,我直接判定它们不合格。后来发现,那两个样本其实是同一个生物学变异很大的个体做的双重复。所以,我的建议是:可视化初筛负责发现问题,但最终判定要结合实验记录和生物学背景。
3.4 综合判断:三条腿走路
阈值、统计、可视化,这三者我觉得是三条腿的关系——只有互相验证,才能走得稳。
我的工作流通常是:
- 先跑一个硬阈值,把明显不合格的样本直接标记为「不合格」。
- 然后跑统计异常检测,把数值上偏离的点找出来,标记为「疑似」。
- 最后画几张可视化图,把「不合格」和「疑似」的样本点在图上看一下——如果它们在 PCA 图里已经和好样本混在一起,我会酌情放宽;如果它们孤立在一边,那基本可以确认了。
最终判定原则:
- 同时满足「超出阈值」+「统计异常」+「可视化离群」 → 直接标记失败
- 满足其中两项 → 标记疑似,手动检查
- 只满足一项 → 保留样本,但要加入上下文注释
你想想看,用这个流程去跑你的数据,是不是比拍脑袋设一个阈值要放心得多?我自己实践下来,误判率至少降低了一半。
好了,这一章的内容就是这些。阈值、统计、可视化,三条腿一起走,才算把「质控失败」这四个字真正定义清楚。记住,做多组学质控最怕的不是数据不好,而是标准没对齐、流程不规范。把定义先定死了,后面的根因分析才能有的放矢。