对付缺失数据凡是有几种应付手段,一种是当缺失数据较少时直接删除相应样本,另一种是对缺失数据举办插补,最后是利用对缺失数据不敏感的阐明要领,譬喻决定树。根基上缺失数据处理惩罚的流程是首先判定其模式是否随机,然后找出缺失的原因,最后对缺失值举办处理惩罚。
一、判定缺失数据
在R语言中缺失值凡是以NA暗示,判定是否缺失值的函数是is.na。另一个常用到的函数是complete.cases,它对数据框举办阐明,判定某一视察样本是否完整。下面我们读取VIM包中的sleep数据作为例子,它的样本数为62,变量数为10,由complete.cases函数计较可知完整的样本个数为42。
———————-
data(sleep, package=”VIM”)
dim(sleep)
sum(complete.cases(sleep))
———————-
二、摸索缺失数据的模式
存在缺失数据环境下,需进一步判定缺失数据的模式是否随机。在R中是操作mice包中的md.pattern函数。
———————-
library(mice)
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
上表中的1暗示没有缺失数据,0暗示存在缺失数据。第一列第一行的42暗示有42个样本是完整的,第一列最后一行的1暗示有一个样本缺少了span、dream、nond三个变量,最后一行暗示各个变量缺失的样本数合计。
另外还可以利用vim包的aggr函数以图形方法描写缺失数据
———————-
aggr(sleep)
———————-
上面的左图显示各变量缺失数据比例,右图显示了各类缺失模式和对应的样本数目,显示nond和dream常常同时呈现缺失值。
三、处理惩罚缺失数据
library(mice)
imp=mice(sleep,seed=1234)
fit=with(imp,lm(Dream~Span+Gest))
pooled=pool(fit)
summary(pooled)