缺失值填充在數(shù)據(jù)分析領(lǐng)域的預(yù)處理過程繞不過去的一個(gè)坎氮发,蛋白質(zhì)組學(xué)也不例外,簡單記錄下幽七,可能有些地方有其特殊之處。
分析缺失值來源:完全隨機(jī)缺失(MCAR溅呢,如質(zhì)譜儀抖動(dòng)澡屡,對(duì)數(shù)據(jù)影響無偏好性,均一分布)咐旧,隨機(jī)缺失(MAR驶鹉,依賴于其他觀測變量,如時(shí)間梯度越長采集越可能出現(xiàn)缺失值)铣墨,非隨機(jī)缺失(MNAR室埋,依賴觀測變量自身,如某些蛋白含量在儀器檢測限以下)伊约。一般我們默認(rèn)缺失值屬于MCAR或MAR機(jī)制類姚淆。
缺失值在蛋白質(zhì)組數(shù)據(jù)中的表現(xiàn)形式:0,NA屡律,NaN腌逢,F(xiàn)iltered等。
如果數(shù)據(jù)量多超埋,缺失值比例少搏讶,認(rèn)為刪除所有缺失值對(duì)結(jié)果不會(huì)有影響,則可簡單刪掉霍殴。但數(shù)據(jù)中缺失值比例比較大時(shí)(如大于30%)窍蓝,不建議直接刪除。
DDA labelfree一般較多繁成,10%-50% 的缺失值。過濾標(biāo)準(zhǔn)不定淑玫,如一個(gè)蛋白中三個(gè)重復(fù)巾腕,2個(gè)有值面睛,建議保留,1個(gè)有值尊搬,嚴(yán)格一點(diǎn)考慮過濾掉叁鉴。
不建議用均值、中位值或最小值來進(jìn)行填充佛寿。
常用方法:KNN幌墓,Sequential KNN,MI冀泻,RandomForest等常侣,所有方法都是基于現(xiàn)有的數(shù)據(jù)來進(jìn)行填充的。
KNN(K近鄰):常用于分類的監(jiān)督學(xué)習(xí)方法弹渔,首先計(jì)算測試數(shù)據(jù)與各個(gè)訓(xùn)練數(shù)據(jù)之間的距離胳施;然后按照距離遞增關(guān)系進(jìn)行排序;選取距離最小的K個(gè)點(diǎn)肢专;確定前K個(gè)點(diǎn)所在類別的出現(xiàn)頻率舞肆;最后返回前K個(gè)點(diǎn)中出現(xiàn)頻率最高的類別作為測試數(shù)據(jù)的預(yù)測分類。
缺失值填充過程:先計(jì)算目標(biāo)對(duì)象(含缺失值的肽段或蛋白)與其他對(duì)象之間的距離(一般默認(rèn)為歐氏距離博杖,其他對(duì)象是無缺失值的)椿胯,再選擇K個(gè)(預(yù)先設(shè)定)距離最近的對(duì)象,然后將對(duì)應(yīng)位置的數(shù)值進(jìn)行平均或加權(quán)剃根,最后得到的數(shù)值用來表征該缺失值的大小哩盲。
impute::impute.knn(data, #矩陣
k=10, #預(yù)設(shè)近鄰數(shù),默認(rèn)10
rowmax=0.5, #當(dāng)某行的缺失值占比超過50%跟继,則用整個(gè)樣本的均值填充
colmax=0.8) #當(dāng)任何一列中缺失值占比80%种冬,計(jì)算終止并報(bào)錯(cuò)
- Sequential KNN(有序K近鄰):KNN方法的升級(jí),一般用于處理缺失值比例高的數(shù)據(jù)舔糖。但缺失值如果太多了娱两,不建議保留。
填充過程:首先根據(jù)數(shù)據(jù)中每個(gè)對(duì)象缺失值的比例進(jìn)行排序(sequential)金吗,從比例最小的那個(gè)對(duì)象開始計(jì)算十兢,對(duì)K個(gè)近鄰的值進(jìn)行平均或加權(quán)計(jì)算填充,這個(gè)填充后的對(duì)象也會(huì)加入后續(xù)其他對(duì)象缺失值填充的計(jì)算當(dāng)中摇庙。
SeqKnn::SeqKNN(data, k=10)
- MI(多重插補(bǔ)):細(xì)分的方法有很多旱物,主要有三部分:一是
mice
,將包含缺失值的原始數(shù)據(jù)集生成幾個(gè)完整的數(shù)據(jù)集(3-10個(gè)無缺失值的數(shù)據(jù)集)卫袒,再把所有填充值的平均值作為最終的填充結(jié)果宵呛;第二with
,使用標(biāo)準(zhǔn)方法夕凝,如線性回歸模型/廣義線性模型等宝穗,對(duì)這幾個(gè)完整的數(shù)據(jù)集進(jìn)行統(tǒng)計(jì)分析(不是評(píng)價(jià)好壞)户秤;第三pool
,整合模型分析的結(jié)果逮矛,輸出最終結(jié)果鸡号。
data(sleep,package="VIM")
# 1st
imp=mice::mice(sleep,
m=5, #生成完整數(shù)據(jù)集個(gè)數(shù)
defaultMethod="pmm", #填充方法
seed=1234) #保證重復(fù)性
# 2nd
fit=with(imp,lm(dream~span+Gest)) #選擇線性模型對(duì)填充數(shù)據(jù)集分析
# 3rd
pooled=pool(fit) #整合最終結(jié)果
summary(pooled)
RF(隨機(jī)森林):將含有缺失值的數(shù)據(jù)按列分開,先用該列的均值進(jìn)行填充须鼎,然后利用完整數(shù)據(jù)(相當(dāng)于訓(xùn)練集)構(gòu)建隨機(jī)森林模型鲸伴,最后利用該模型對(duì)含有缺失值的數(shù)據(jù)(相當(dāng)于測試集)進(jìn)行預(yù)測,并可對(duì)預(yù)測的結(jié)果進(jìn)行評(píng)價(jià)晋控。
沒有哪種方法一定最好汞窗,具體問題具體分析√腔模可以用幾種方法填充后比較杉辙。也可用一些現(xiàn)有的工具評(píng)價(jià),如NAguideR可比較評(píng)估23種缺失值填充方法捶朵,幫助我們從中選擇最好的一種蜘矢。