R软件mice函数填补缺失数据怎么写程序?

Python011

R软件mice函数填补缺失数据怎么写程序?,第1张

install.packages("mice")#安装mice包

library(mice)#调用mice包

mi <- mice(dataset)#利用mice包中的mice函数进行插补缺失数据

mi.reg <- with(data=mi,exp=glm(y~x+z))#对新数据构建回归模型

在问卷数据或实验数据中,经常会包含由于未作答、设备故障或误编码数据的缘故出现缺失值。在R中,缺失值以符号NA(Not Available,不可用)表示。不可能出现的值(例如,被0除的结果) 通过符号NaN(Not a Number,非数值)来表示。

首先我们来安装两个R包,VIM和mice包。

函数 is.na( ) 允许你检测缺失值是否存在,作用于一个对象上,也将返回一个相同大小的对象,如果某个元素是缺失值,相应的位置将被改写为TRUE,不是缺失值的位置则为FALSE。

由图可以看出,所有显示TRUE的地方都是缺失值。

该可以用来识别矩阵或数据框中没有缺失值的行。若每行都包含完整实例,则返回TRUE的逻辑向量;若每行有一个或多个缺失值,则返回FALSE。

可以看出1、3、4行存在缺失值。

mice包中的md.pattern,形成缺失表。

aggr ( ) 是VIM包中的函数,可以形成缺失图。

根据变量之间的关系来填补或恢复缺失值,通过推理,数据的恢复可能是准确的或近似的。

把包含一个或多个缺失值的行删除,称作行删除法,或个案删除,大部分统计软件包默认采用的是行删除法。

通过函数 na.omit( ) 移除所有含有缺失值的观测。na.omit( ) 可以删除所有含有缺失数据的行。

当然,我们有时并不想把缺失的行直接删除,因为这样难以避免造成了数据的损失。简单插补是用均值,中位数或众数来替换变量中缺失的值。将初始数据集中的属性分为数值属性和非数值属性来分别进行处理。

对缺失值的高级处理方式有很多,大致有回归插补、多重插补、热卡插补,K最近距离邻法等等,现在只介绍多重插补的原理:

多重插补(MI)是一种基于重复模拟的处理缺失值的方法,它从一个包含缺失值的数据集中生成一组数据完整的数据集(即不包含缺失值的数据集,通常是3-10个)。每个完整数据集都是通过对原始数据中的缺失数据进行插补而生成的。在每个完整的数据集上引用标准的统计方法,最后,把这些单独的分析结果整合为一组结果。

基于mice包的分析通常符合以下分析过程:

现在我们尝试插补之前的sleep数据:

完全按照上面的抄就可以,summary之后可以看到:

可以通过检查分析过程所创建的对象来获取更多的插补信息。例如,来看imp对象的汇总信息:

从输出结果可以看到,五个数据集同时被创建,预测均值(pmm)匹配法被用来处理每个含 缺失数据的变量。BodyWgt、BrainWgt、Pred、Exp和Danger没有进行插补(" "),因为它们并没有缺失数据。VisitSequence从左至右展示了插补的变量,从NonD开始,以Gest结束。最后,预测变量矩阵(PredictorMatrix)展示了进行插补过程的含有缺失数据的变量,它们利 用了数据集中其他变量的信息.(在矩阵中,行代表插补变量,列代表为插补提供信息的变量,1 和0分别表示使用和未使用。)