缺失值的发现和处理在我们进行临床数据分析的时候是非常重要的环节。今天给大家介绍一个包mice主要用来进行缺失值的发现与填充。同时结合VIM包进行缺失变量的可视化展示。
首先我们看下包的安装:
install.packages("mice")install.packages("VIM")
我们直接看下具体的实例:
library(mice)library(VIM)library(lattice)library("survival")#数据集nhanes
##查看数据缺失的模式md.pattern(nhanes)
还有另外一种描述展示:
fluxplot(nhanes)
从上图我可以看出变量越往左上代表确实越少,越往右下代表缺失越严重。
接下来就是我们如何填充呢,缺失值填充函数mice中包含了很多的填充方法:
那么如何选择对应的方法,那么我们需要进行评估,通过查看迭代后的结果的收敛先进行评估数据填充方法,我们以默认的方法为例:
imp <- mice(nhanes, print=F)plot(imp)
从上面的结果我们直接看所有的折线是否聚集在一起,聚集就代表收敛性好,当然,这里只是对比每次迭代后的均值和方差。
当然,我们还有另外一种方法评估数据填充方法的可靠性,那就是直接对比推算结果和原始结果的差异。直接看实例:
stripplot(imp, chl~.imp, pch=20, cex=2)
图中蓝色为原始数据,红色为推算的结果。可以看出基本的分布式是一致的,,当然也存在一定的差异。
我们也可以直接看全部的变量的情况:
stripplot(imp)
我们还可以看下每个变量的分布密度图是否存在差异。
densityplot(imp)
最后我们看下在VIM中是如何可视化结果的。我们直接通过实例来看下:
dd=aggr(nhanes)plot(dd,numbers = TRUE, prop = FALSE)
从图中我们可以看出各变量的缺失情况以及分布情况。如果想查看两个变量的情况时,还可以使用另外一种展示方式:
marginplot(nhanes[,c(1,2)])
当然还可以展示填充的情况:
x_imputed <- kNN(nhanes[,c(1,2)])marginplot(x_imputed, delimiter ="_imp")
图中橘黄色代表填充的点数据。当然还有一个impute包专门用来进行缺失值填充的,大家可以根据自己的需要进行选择,我是觉得有图有真相。