如何识别数据异常样本

做数据处理时,最让人头疼的就是异常样本了。这些样本像个卧底,悄悄把一批数据拖进坑里。无论是测序过程中的污染、细胞死亡还是提取失败,都可能导致GC含量和比对率突然“跳票”。还有一个问题就是常规统计量对异常值非常敏感,直接删除可能会给后续实验带来麻烦。所以,与其单纯追求数据量,不如先学会识别异常样本,把资源留给真正的有效数据。 异常样本有很多特点可以让我们快速识别。GC含量的波动超过5%或10%是个信号;比对率低于组内中位数的20%时也要警惕;表达量要么完全没有(counts=0),要么高得吓人(FPKM超过10000);菌群构成突然变化;单细胞中线粒体比例失衡;PCA图形中孤立出现等等。 聚类树可以帮助我们先画出家族图谱,再找出叛逆者。通过层级聚类或PCA生成的树状图能一目了然地看到离群点。但是要注意,没有绝对的阈值,需要经验和后续验证来校准。 Z-score是一个很好的方法来判断数据偏离正常范围多少倍标准差。比如用R语言代码实现这个功能:模拟一组数据,有一个10是异常值,计算每个数的Z-score并四舍五入。再用MAD计算稳健中位数绝对偏差,然后用这个值计算每一个数的Z-score。最后用这个Z-score大于3倍标准差来判定异常值。 这个思路还可以扩展到样本间相似度的检测上:用Pearson或Spearman算出相关系数矩阵行均值和列均值双低的情况就是离群点。再结合聚类树和PCA进行交叉验证,这样误杀率就会降低很多。 Z-score不仅用于清洗数据,还可以美化热图:把原始计数转化为Z值并按行标准化后给热图上色,就能突出组内差异。颜色选择对数正态或蓝色系时能一眼看到“爆红”或“墨绿”的异常样本。 综上所述,处理异常样本可以分成三步曲:先画树或PCA图形标出可疑孤岛;再计算稳健统计量如MAD来计算Z-score;最后结合聚类、相关系数、PCA进行交叉验证三票离场。这样就能在实验初期挡住污染、失败和伪差异等问题,让后续分析跑在高质量数据上。