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