处理缺失值--多重插补及其他⽅法
处理缺失值--多重插补
多重插补(MI)是⼀种基于重复模拟的处理缺失值的⽅法。在⾯对复杂的缺失值问题时,MI是最常选⽤的⽅法,它将从⼀个包含缺失值的数据集中⽣成⼀组完整的数据集(通常是3到10个)。每个模拟数据集中,缺失数据将⽤蒙特卡洛⽅法来填补。此时,标准的统计⽅法便可应⽤到每个模拟的数据集上,通过组合输出结果给出估计的结果,以及引⼊缺失值时的置信区间。R中可利⽤Amelia、mice和mi包来执⾏这些操作。
通过mice包应⽤多重插补的步骤:
函数mice()⾸先从⼀个包含缺失数据的数据框开始,然后返回⼀个包含多个(默认为5个)完整数据集的对象。每个完整数据集都是通过对原始数据框中的缺失数据进⾏插补⽽⽣成的。由于插补有随机的成分,因此每个完整数据集都略有不同。然后,with()函数可依次对每个完整数据集应⽤统计模型(如线性模型或⼴义线性模型),最后,pool()函数将这些单独的分析结果整合为⼀组结果。最终模型的标准误和p值都将准确地反映出由于缺失值和多重插补⽽产⽣的不确定性。
mice()函数如何插补缺失值呢?
凯蒂派瑞答:缺失值的插补通过Gibbs抽样完成。每个包含缺失值的变量都默认可通过数据集中的其他变量预测得来,于是这些预测⽅程便可⽤来预测缺失数据的有效值。该过程不断迭代直到所有的缺失值都收敛为⽌。对于每个变量,⽤户可以选择预测模型的形式(称为基本插补法)和待选⼊的变量。weaker
默认地,预测的均值⽤来替换连续型变量中的缺失数据,⽽Logistic或多元Logistic回归则分别⽤来替换⼆值⽬标变量(两⽔平因⼦)或多值变量(多于两⽔平的因⼦)。其他基本插补法包括贝叶斯线性回归、判别分析、两⽔平正态插补和从观测值中随机抽样。⽤户也可以选择⾃⼰独有的⽅法。
基于mice包的分析通常符合以下分析过程:
library(mice)穷爸爸 富爸爸
战国策翻译
imp <- mice(data, m)
fit <- with(imp, analysis)
pooled <- pool(fit)
summary(pooled)
其中:
data是⼀个包含缺失值的矩阵或数据框。
q imp是⼀个包含m个插补数据集的列表对象,同时还含有完成插补过程的信息。默认m为5。 q汉英字典在线查询
第4analysis是⼀个表达式对象,⽤来设定应⽤于m个插补数据集的统计分析⽅法。⽅法包括做线性回归模型的lm()函数、做⼴义线性模型axa
的glm()函数、做⼴义可加模型的gam(),以及做负⼆项模型的nbrm()函数。表达式在函数的括号中,~的左边是响应变量,右边是预测变量(⽤+符号分隔开)。
q fit是⼀个包含m个单独统计分析结果的列表对象。
臭鼬是什么pooled是⼀个包含这m个统计分析平均结果的列表对象。
现将多重插补法应⽤到sleep数据集上。重复上⾯的分析过程,不过此处我们将利⽤所有的62种动物。设定随机种⼦为1234:
library(mice)
data(sleep, package="VIM")
imp <- mice(sleep, ed=1234)
弗兰克斯坦fit <- with(imp, lm(Dream ~ Span + Gest))
pooled <- pool(fit)
summary(pooled)
结果分析:此处,你可以看到Span的回归系数不显著(p≈0.08 ),Gest的系数在p<0.01的⽔平下很显著。fmi栏也展⽰了缺失信息(即由于引⼊了缺失数据⽽引起的变异所占整体不确定性的⽐例)。
处理缺失值的其他⽅法
R还⽀持其他⼀些处理缺失值的⽅法。虽然它们不如之前的⽅法应⽤⼴泛,下表列出的包在⼀些专业领域⾮常有⽤。处理缺失数据的专业⽅法
>tension