探索缺失值模式

  • 列表顯示缺失值

使用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

相關文章
相關標籤/搜索