处理缺失值--探索缺失值模式(列表显示、图形探究、用相关性探究)
处理缺失值的高级方法--探索缺失值模式
在决定如何处理缺失数据前,了解哪些变量有缺失值、数目有多少、是什么组合形式等信息非常有用,要知道数据为何缺失。
1 列表显示缺失值
mice包中的md.pattern()函数可生成一个以矩阵或数据框形式展示缺失值模式的表格。将函数应用到sleep数据集,可得到:
library(mice) data(sleep, package="VIM") md.pattern(sleep)
结果分析:表中的1和0显示了缺失值模式:0表示变量的列中有缺失值,1则表示没有缺失值。第一行表述了“无缺失值”的模式(所有元素都为1)。第二行表述了“除了Span之外无缺失值”的模式。第一列表示各缺失值模式的实例个数,最后一列表示各模式中有缺失值的变量的个数。此处可以看到,有42个实例没有缺失值,仅2个实例缺失了Span。9个实例同时缺失了NonD和Dream的值。数据集包含了总共(42×0)+(2×1)+…+(1×3)=38个缺失值。最后一行给出了每个变量中缺失值的数目。
2 图形探究缺失数据
虽然md.pattern()函数的表格输出非常简洁,但我通常觉得用图形展示模式更为清晰。VIM包提供了大量能可视化数据集中缺失值模式的函数,比如其中几个:aggr()、matrixplot()和scattMiss()等。
(1)aggr()函数不仅绘制每个变量的缺失值数,还绘制每个变量组合的缺失值数。例如:
library("VIM") aggr(sleep, prop=FALSE, numbers=TRUE)
结果分析:可以看到,变量NonD有最大的缺失值数(14),有2种哺乳动物缺失了NonD、Dream和Sleep的评分。42种动物没有缺失值。
(2)matrixplot()函数可生成展示每个实例数据的图形。matrixplot(sleep)的图形如下图所示。此处,数值型数据被重新转换到[0, 1]区间,并用灰度来表示大小:浅色表示值小,深色表示值大。默认缺失值为红色。注意,在图中,红色经过手工阴影化处理,因此相对于灰
色缺失值非常显眼。
matrixplot(sleep)
结果分析:该图形可以交互,单击一列会按其对应的变量重排矩阵。图中的行按BodyWgt降序排列。通过矩阵图,你可以看出某些变量的缺失值模式是否与其他变量的真实值有关联。此图中可以看到,无缺失值的睡眠变量(Dream、NonD和Sleep)对应着较小的体重(BodyWgt)或脑重(BrainWgt)。
(3)marginplot()函数可生成一幅散点图,在图形边界展示两个变量的缺失值信息。以做梦时
长与哺乳动物妊娠期时长的关系为例,来看下列代码:
marginplot(sleep[c("Gest","Dream")], pch=c(20), col=c("darkgray", "red", "blue"))
结果分析:图形的主体是Gest和Dream(两变量数据都完整)的散点图。左边界的箱线图展示的是包含(深灰色)与不包含(红色)Gest值的Dream变量分布。注意,在灰度图上红色是更深的阴影。四个红色的点代表缺失了Gest得分的Dream值。在底部边界上,Gest和Dream间的关系反过来了。可以看到,妊娠期和做梦时长呈负相关,缺失妊娠期数据时动物的做梦时长一般更长。两个变量均有缺失值的观测个数在两边界交叉处用蓝色输出(左下角的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)
结果分析:此时,你可以看到Dream和NonD常常一起缺失(r=0.91)。相对可能性较小的是Sleep和NonD一起缺失(r=0.49),以及Sleep和Dream(r=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