数据中异常值的鉴定和处理(1)
數據預處理中最不想碰到但又繞不過的一個問題是異常樣品的鑒定和處理。異常樣本,也稱為離群樣本,其定義是與其它樣本有顯著差異的樣本。通常是由實驗操作失敗、樣本受損等不易發現的外部因素引起,比如樣本被污染了、細胞死亡了、細胞破損了、動物個體遺傳背景不符、抗體特異性差、核酸提取不純、RNA降解、測序質量差、測序深度很低等。異常樣本的存在會干擾數據分析結果的穩定性,常見統計指標非常容易受到異常值的影響,例如均值、方差和相關性等。相比于保留更多的樣本,我們更希望保留質量更高的樣本 (這也要求我們測序重復要較多,不然只有2重復,去掉一個就沒法分析了)。
異常樣本有什么特征?異常樣在數據上體現在與其它所有樣本都差別比較大,比如樣品GC含量異常、比對率遠低于低于中位比對率、基因表達量整體都特別高或幾乎都為0、菌的構成很異常、與同組樣品差別大、檢測到的基因數異常多或異常少、單細胞里面還會考慮線粒體基因的表達比例等。
現在又到了另一個問題,這些是很好的指標,但閾值怎么設置?
如果和導師說這個樣本異常,然后被靈魂質問,你以為你以為的就是你以為的嗎。那我們如何來有效地發現和定義異常樣本呢?
聚類結果判斷異常樣本
一般可以通過層級聚類樹或PCA的方式查看是否存在異常樣品,但具體判斷哪個樣品是異常樣本缺乏明確的標準。如下面左圖展示的是數據中混入了異常樣本(圖中藍框)后數據聚類成一大一小兩個分支,51-52一枝,其它樣品一枝。我們現在判定51-52為異常樣本,把它們去除,圖就變成了右側的樣子,變成兩個大分支,左側分支的樣品42要被判斷為異常樣本嗎?沒有答案。
異常值的判定 Z-score方法
我們先從最簡單的情況看起,假如有一組數,-10,10,20,3,1,3,3,4,4,4,4,5,6,7,100, 哪個數字看起來最異常呢?異常值的定義是與其余數據有顯著差異的數據,看上去應該是100,怎么計算一下呢?
如果數據主體符合正態分布,一般使用Z-score的方法。Z-score (也稱standard score) 代表一個給定的測量值偏離平均值多少倍的標準差,其正值代表大于平均值,負值代表小于平均值。計算方式如下:
在異常值檢測時,一般認為偏離3倍標準差以上為異常值:
在R中簡單實現如下:
set.seed(1) ysx <- c(round(c(rnorm(30)),1),10) ysx[1] -0.6 ?0.2 -0.8 ?1.6 ?0.3 -0.8 ?0.5 ?0.7 ?0.6 -0.3 [11] ?1.5 ?0.4 -0.6 -2.2 ?1.1 ?0.0 ?0.0 ?0.9 ?0.8 ?0.6 [21] ?0.9 ?0.8 ?0.1 -2.0 ?0.6 -0.1 -0.2 -1.5 -0.5 ?0.4 [31] 10.0
ysx_scale <- round(as.vector(scale(ysx)),1) ysx_scale[1] -0.5 -0.1 -0.6 ?0.6 -0.1 -0.6 ?0.1 ?0.2 ?0.1 -0.4 [11] ?0.6 ?0.0 -0.5 -1.3 ?0.4 -0.2 -0.2 ?0.3 ?0.2 ?0.1 [21] ?0.3 ?0.2 -0.2 -1.2 ?0.1 -0.3 -0.3 -1.0 -0.5 ?0.0 [31] ?4.8
另外也可用中位數和中位絕對偏差代替,結果更穩定一些
set.seed(1) ysx <- c(round(c(rnorm(30)),1),10) ysx ysx_mad = mad(ysx) ysx_median = median(ysx)ysx_scale = round((ysx-ysx_median) / ysx_mad,1) ysx_scale_outlier <- abs(ysx_scale) >=3 ysx_scale_outlier[1] -0.6 ?0.2 -0.8 ?1.6 ?0.3 -0.8 ?0.5 ?0.7 ?0.6 -0.3 [11] ?1.5 ?0.4 -0.6 -2.2 ?1.1 ?0.0 ?0.0 ?0.9 ?0.8 ?0.6 [21] ?0.9 ?0.8 ?0.1 -2.0 ?0.6 -0.1 -0.2 -1.5 -0.5 ?0.4 [31] 10.0
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [9] FALSE FALSE FALSE FALSE FALSE ?TRUE FALSE FALSE [17] FALSE FALSE FALSE FALSE FALSE FALSE FALSE ?TRUE [25] FALSE FALSE FALSE FALSE FALSE FALSE ?TRUE
那么這個怎么應用到鑒定異常樣本之間呢?度量不同樣本之間的相似度可以使用Pearson correlation或Spearman corelation值等。如果一個樣本與其他樣本相似度都很低,低于3倍的標準差,則可視為異常樣品。這個怎么算呢?下文再說!
Z-score也常用于熱圖美化中:R語言學習 - 熱圖美化 (數值標準化和調整坐標軸順序)
往期精品(點擊圖片直達文字對應教程)
后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
?
(請備注姓名-學校/企業-職務等)
總結
以上是生活随笔為你收集整理的数据中异常值的鉴定和处理(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.5w字的Rmarkdown入门教程汇
- 下一篇: 单细胞转录组基本概念(一)