缺失值處理

一.什么是缺失值,NA與NULL的區(qū)別

(1)NA表示數(shù)據(jù)集中的該數(shù)據(jù)遺失、不存在。在針對(duì)具有NA的數(shù)據(jù)集進(jìn)行函數(shù)操作的時(shí)候,該NA不會(huì)被直接剔除。如x<-c(1,2,3,NA,4),取mean(x),則結(jié)果為NA,如果想去除NA的影響,需要顯式告知mean方法,如 mean(x,na.rm=T);NA是沒有自己的mode的,在vector中,它會(huì)“追隨”其他數(shù)據(jù)的類型,比如剛剛的x,mode(x)為numeric,mode(x[4])亦然

(2) NULL表示未知的狀態(tài)。它不會(huì)在計(jì)算之中,如x<-c(1,2,3,NULL,4),取mean(x),結(jié)果為2.5。NULL是不算數(shù)的,length(c(NULL))為0,而length(c(NA))為1。可見NA“占著”位置,它存在著,而NULL沒有“占著”位置,或者說,“不知道”有沒有真正的數(shù)據(jù)。

二.識(shí)別缺失值NA

在R語(yǔ)言中缺失值通常以NA表示,判斷是否缺失值的函數(shù)是is.na。

另一個(gè)常用到的函數(shù)是complete.cases,它對(duì)數(shù)據(jù)框進(jìn)行分析,判斷某一觀測(cè)樣本是否完整。

下面我們讀取VIM包中的sleep數(shù)據(jù)作為例子,它的樣本數(shù)為62,變量數(shù)為10,由complete.cases函數(shù)計(jì)算可知完整的樣本個(gè)數(shù)為42。

data(sleep, package="VIM")

dim(sleep)

sum(complete.cases(sleep))

sum(is.na(sleep))

#可以使用vim包的aggr函數(shù)以圖形方式描述缺失數(shù)據(jù)

aggr(sleep)

上面的左圖顯示各變量缺失數(shù)據(jù)比例,右圖顯示了各種缺失模式和對(duì)應(yīng)的樣本數(shù)目,顯示nond和dream經(jīng)常同時(shí)出現(xiàn)缺失值。

三、識(shí)別缺失數(shù)據(jù)的模式

存在缺失數(shù)據(jù)情況下,需進(jìn)一步判斷缺失數(shù)據(jù)的模式是否隨機(jī)。在R中是利用mice包中的md.pattern函數(shù)。

library(mice)

md.pattern(sleep)

上表中的1表示沒有缺失數(shù)據(jù),0表示存在缺失數(shù)據(jù)。第一列第一行的42表示有42個(gè)樣本是完整的,第一列最后一行的1表示有一個(gè)樣本缺少了span、dream、nond三個(gè)變量,最后一行表示各個(gè)變量缺失的樣本數(shù)合計(jì)。

四、處理缺失數(shù)據(jù)

對(duì)于缺失數(shù)據(jù)通常有三種應(yīng)付手段:

(1)當(dāng)缺失數(shù)據(jù)較少時(shí)直接刪除相應(yīng)樣本

刪除缺失數(shù)據(jù)樣本,其前提是缺失數(shù)據(jù)的比例較少,而且缺失數(shù)據(jù)是隨機(jī)出現(xiàn)的,這樣刪除缺失數(shù)據(jù)后對(duì)分析結(jié)果影響不大。

(2)對(duì)缺失數(shù)據(jù)進(jìn)行插補(bǔ)

用變量均值或中位數(shù)來代替缺失值,其優(yōu)點(diǎn)在于不會(huì)減少樣本信息,處理簡(jiǎn)單。但是缺點(diǎn)在于當(dāng)缺失數(shù)據(jù)不是隨機(jī)出現(xiàn)時(shí)會(huì)產(chǎn)成偏誤。

多重插補(bǔ)法(Multiple imputation):多重插補(bǔ)是通過變量間關(guān)系來預(yù)測(cè)缺失數(shù)據(jù),利用蒙特卡羅方法生成多個(gè)完整數(shù)據(jù)集,再對(duì)這些數(shù)據(jù)集分別進(jìn)行分析,最后對(duì)這些分析結(jié)果進(jìn)行匯總處理。可以用mice包實(shí)現(xiàn)。

(3)使用對(duì)缺失數(shù)據(jù)不敏感的分析方法,例如決策樹。

基本上缺失數(shù)據(jù)處理的流程是首先判斷其模式是否隨機(jī),然后找出缺失的原因,最后對(duì)缺失值進(jìn)行處理。

exp 1

library(mice)

imp=mice(sleep,seed=1234)

fit=with(imp,lm(Dream~Span+Gest))

pooled=pool(fit)

summary(pooled)

#在R語(yǔ)言中實(shí)現(xiàn)方法是使用mice包中的mice函數(shù),生成多個(gè)完整數(shù)據(jù)集存在imp中,再對(duì)imp進(jìn)行線性回歸,最后用pool函數(shù)對(duì)回歸結(jié)果進(jìn)行匯總。匯總結(jié)果的前面部分和普通回歸結(jié)果相似,nmis表示了變量中的缺失數(shù)據(jù)個(gè)數(shù),fmi表示fraction of missing information,即由缺失數(shù)據(jù)貢獻(xiàn)的變異

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容