使用complete.case() 函數列出完整的實例,可是若是數據集大,較爲麻煩app
使用 mice包中的 md.pattern() 方法函數
> library(mice) > data(sleep,package="VIM") > md.pattern(sleep) BodyWgt BrainWgt Pred Exp Danger Sleep Span Gest Dream NonD 42 1 1 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 1 0 1 1 1 1 3 1 1 1 1 1 1 1 0 1 1 1 9 1 1 1 1 1 1 1 1 0 0 2 2 1 1 1 1 1 0 1 1 1 0 2 1 1 1 1 1 1 1 0 0 1 1 2 2 1 1 1 1 1 0 1 1 0 0 3 1 1 1 1 1 1 1 0 1 0 0 3 0 0 0 0 0 4 4 4 12 14 38 # 0:表示缺失值 ,1:表示完好失值 # 第一列表示各缺失值的實例個數 ,例如 42個實例沒有缺失值,9個實例同時缺失了 NonD 和 Dream 的值 # 最後一列表示缺失值的變量個數 # 整體缺失值的個數 (42*0)+(2*1)...(1*3) = 38 # 最後一行表示的每一個變量的缺失值數目
aggr()函數不只繪製每一個變量的缺失值,還繪製每一個變量組合的缺失值數code
> library(VIM) > aggr(sleep,prop= FALSE,numbers= T) #以下圖1 aggr(sleep,prop=T,numbers = T) #以下圖2,以比例的形式替代計數
圖1 左側顯示NonD變量缺失值數爲14,右側顯示42個完好失實例,9個實例同時缺失NonD、Dream變量變量
圖 2方法
還有多種圖 p388im
能夠用指示變量替代數據集中的數據(1表示缺失,0表示存在),這樣生成的矩陣有時被稱作 影子矩陣apply
求這些指示變量之間和它們與初始(可觀測)變量之間的相關性,有助於觀察哪些變量常一塊兒缺失,以及分析變量「缺失」與其餘變量間的關係數據
> x <- as.data.frame(abs(is.na(sleep))) > head(sleep,n=5) #前5條數據 BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger 1 6654.000 5712.0 NA NA 3.3 38.6 645 3 5 3 2 1.000 6.6 6.3 2.0 8.3 4.5 42 3 1 3 3 3.385 44.5 NA NA 12.5 14.0 60 1 1 1 4 0.920 5.7 NA NA 16.5 NA 25 5 2 3 5 2547.000 4603.0 2.1 1.8 3.9 69.0 624 3 5 4 > head(x,n=5) BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger 1 0 0 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 3 0 0 1 1 0 0 0 0 0 0 4 0 0 1 1 0 1 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 > y <- x[which(apply(x,2,sum)>0)] #可提取(但不所有是)缺失值的變量 > cor(y) NonD Dream Sleep Span Gest NonD 1.00000000 0.90711474 0.48626454 0.01519577 -0.14182716 Dream 0.90711474 1.00000000 0.20370138 0.03752394 -0.12865350 Sleep 0.48626454 0.20370138 1.00000000 -0.06896552 -0.06896552 Span 0.01519577 0.03752394 -0.06896552 1.00000000 0.19827586 Gest -0.14182716 -0.12865350 -0.06896552 0.19827586 1.00000000 #NonD 和 Dream 經常一塊兒缺失(r = 0.91), #相對可能性較小的Sleep和NonD一塊兒缺失(r=0.49),以及Sleep和Dream(r=0.20) #最後,你能夠看到含缺失值變量與其餘可觀測變量間的關係 > cor(sleep,y,use= "pairwise.complete.obs") NonD Dream Sleep Span Gest BodyWgt 0.22682614 0.22259108 0.001684992 -0.05831706 -0.05396818 BrainWgt 0.17945923 0.16321105 0.007859438 -0.07921370 -0.07332961 NonD NA NA NA -0.04314514 -0.04553485 Dream -0.18895206 NA -0.188952059 0.11699247 0.22774685 Sleep -0.08023157 -0.08023157 NA 0.09638044 0.03976464 Span 0.08336361 0.05981377 0.005238852 NA -0.06527277 Gest 0.20239201 0.05140232 0.159701523 -0.17495305 NA Pred 0.04758438 -0.06834378 0.202462711 0.02313860 -0.20101655 Exp 0.24546836 0.12740768 0.260772984 -0.19291879 -0.19291879 Danger 0.06528387 -0.06724755 0.208883617 -0.06666498 -0.20443928 Warning message: In cor(sleep, y, use = "pairwise.complete.obs") : 標準差爲零
在這相關係數矩陣種,行爲可觀測變量,列爲表示缺失的指示變量img
從相關係數第一列可看到,體重越大(r =0.227)、妊娠期越長(r=0.202)、睡眠暴露度越大(r =0.245)的動物無夢睡眠的評分更可能缺失,其餘列的信息也可按照相似方式得出,注意,表中的相關係數並不特別大,代表數據是MCAR的可能性比較小,更可能爲MARco
不過也毫不能排除數據是NMAR的可能性,由於你並不知道缺失數據背後的真實數據是怎麼樣的,好比,你不可能知道哺乳動物作夢市場與該變量數據缺失機率間的關係。當缺少強力外部證據時,咱們一般假設數據是MCAR或者MAR