1. 程式人生 > 其它 >處理缺失值--探索缺失值模式(列表顯示、圖形探究、用相關性探究)

處理缺失值--探索缺失值模式(列表顯示、圖形探究、用相關性探究)

處理缺失值的高階方法--探索缺失值模式

在決定如何處理缺失資料前,瞭解哪些變數有缺失值、數目有多少、是什麼組合形式等資訊非常有用,要知道資料為何缺失。

1列表顯示缺失值

mice包中的md.pattern()函式可生成一個以矩陣或資料框形式展示缺失值模式的表格。將函式應用到sleep資料集,可得到:

library(mice)

data(sleep, package="VIM")

md.pattern(sleep)

結果分析:表中的10顯示了缺失值模式:0表示變數的列中有缺失值,1則表示沒有缺失值。第一行表述了“無缺失值”的模式(所有元素都為1)。第二行表述了“除了Span之外無缺失值”的模式。第一列表示各缺失值模式的例項個數,最後一列表示各模式中有缺失值的變數的個數。此處可以看到,有

42個例項沒有缺失值,僅2個例項缺失了Span9個例項同時缺失了NonDDream的值。資料集包含了總共(42×0)+(2×1)++(1×3)=38個缺失值。最後一行給出了每個變數中缺失值的數目。

2圖形探究缺失資料

雖然md.pattern()函式的表格輸出非常簡潔,但我通常覺得用圖形展示模式更為清晰。VIM包提供了大量能視覺化資料集中缺失值模式的函式,比如其中幾個:aggr()matrixplot()scattMiss()等。

1aggr()函式不僅繪製每個變數的缺失值數,還繪製每個變數組合的缺失值數。例如:

library("VIM")

aggr(sleep, prop=FALSE, numbers=TRUE)

結果分析:可以看到,變數NonD有最大的缺失值數(14),有2種哺乳動物缺失了NonDDreamSleep的評分。42種動物沒有缺失值。

2matrixplot()函式可生成展示每個例項資料的圖形。matrixplot(sleep)的圖形如下圖所示。此處,數值型資料被重新轉換到[0, 1]區間,並用灰度來表示大小:淺色表示值小,深色表示值大。預設缺失值為紅色。注意,在圖中,紅色經過手工陰影化處理,因此相對於灰

色缺失值非常顯眼。

matrixplot(sleep)

結果分析:該圖形可以互動,單擊一列會按其對應的變數重排矩陣。圖中的行按BodyWgt降序排列。通過矩陣圖,你可以看出某些變數的缺失值模式是否與其他變數的真實值有關聯。此圖中可以看到,無缺失值的睡眠變數(

DreamNonDSleep)對應著較小的體重(BodyWgt)或腦重(BrainWgt)。

3marginplot()函式可生成一幅散點圖,在圖形邊界展示兩個變數的缺失值資訊。以做夢時

長與哺乳動物妊娠期時長的關係為例,來看下列程式碼:

marginplot(sleep[c("Gest","Dream")], pch=c(20),

col=c("darkgray", "red", "blue"))

結果分析:圖形的主體是GestDream(兩變數資料都完整)的散點圖。左邊界的箱線圖展示的是包含(深灰色)與不包含(紅色)Gest值的Dream變數分佈。注意,在灰度圖上紅色是更深的陰影。四個紅色的點代表缺失了Gest得分的Dream值。在底部邊界上,GestDream間的關係反過來了。可以看到,妊娠期和做夢時長呈負相關,缺失妊娠期資料時動物的做夢時長一般更長。兩個變數均有缺失值的觀測個數在兩邊界交叉處用藍色輸出(左下角的0)。

3 用相關性探索缺失值

在繼續下文之前,還有些方法值得注意。你可用指示變數替代資料集中的資料(1表示缺失,0表示存在),這樣生成的矩陣有時被稱作影子矩陣。求這些指示變數之間和它們與初始(可觀測)變數之間的相關性,有助於觀察哪些變數常一起缺失,以及分析變數缺失與其他變數間的關係。

請看如下程式碼

x <- as.data.frame(abs(is.na(sleep)))

sleep的元素缺失,則資料框x對應的元素為1,否則為0。你可以觀察以下資料的前幾行:

head(sleep, n=5)

head(x, n=5)

以下程式碼,可提取含(但不全部是)缺失值的變數:

y <- x[which(apply(x,2,sum)>0)]

cor(y) 可列出這些指示變數間的相關係數:

cor(y)

結果分析:此時,你可以看到DreamNonD常常一起缺失(r=0.91)。相對可能性較小的是SleepNonD一起缺失(r=0.49),以及SleepDreamr=0.20)。

含缺失值變數與其他可觀測變數間的關係:

cor(sleep, y, use="pairwise.complete.obs")

結果分析:在這個相關係數矩陣中,行為可觀測變數,列為表示缺失的指示變數。從相關係數矩陣的第一列可以看到,體重BodyWgt越大(r=0.227)、妊娠期Gest越長(r=0.202)、睡眠暴露度Exp越大(r=0.245)的動物無夢睡眠的評分更可能缺失。其他列的資訊也可以按類似方式得出。

注意,表中的相關係數並不特別大,表明資料是MCAR的可能性比較小,更可能為MAR

本文來自部落格園,作者:zhang-X,轉載請註明原文連結:https://www.cnblogs.com/YY-zhang/p/15153092.html