多重插补为什么要汇总分析

Python047

多重插补为什么要汇总分析,第1张

是Rubin在1978年首次提出。以下为各种概念:

用m个插补值的向量代替每一个缺失值。(m要求大于等于20)分别用这m个插补值代替每一个缺失值从而建立m个完整数据集。多重插补是通过多个单一插补的组合。

应对一般的统计软件只会进行行删除法,或者个案删除法,在数据集中出现大量缺失值得时候,就会出现剩余的样本不足与反映出真是情况的可能,所以可以使用多重插补给到的概念:是一种基于重复模拟的处理缺失值的方法。它从一个包含缺失值的数据集中生成一组完整的数据集。每个数据集中的缺失数据用蒙特卡洛方法来填补。

假定在数据随机缺失的情况下,用两个或者更多能够反映数据本身概率分布的值来填补缺失值的方法。

R语言进行多重插补

输入为含有缺失值数据的数据库,输出可以得到五个完整数据库(默认为无可以自行调整),这五个数据都是通过对于原始数据中有缺失值数据进行插补之后生成的,因为插补是存在随机成分的,那么生成的数据集也是略有不同的

R语言进行多重插补流程图

通过mice()函数将原有含缺失值的数据集进行多重插补后得到五个(多个)完整数据集;

With函数是用于依次对生成的每个完整数据集应用统计模型;

然后使用pool函数将这些单独的分析结果整合为一组结果;

使用多重插补存在的问题

研究的因变量和变量之间不能插补。

例如:研究吸烟与脑猝的关系,吸烟(X)或脑猝(Y)缺失的人,要排除,不能使用多重插补进行数据填补。混杂关系可以插补。例如研究上者需要考虑BMI那么BMI缺失就可以通过使用多重插补进行数据填补。

插补的数据和原始的数据都需要做分析,如果结果一致,表明数据缺失对结果影响不大,可以理解为敏感性分析。

完整的多重插补

一个完整的多重插补应该包含三步:数据填补,计算,汇总。

数据填补:对每一个缺失数据填补m( m >1)次。每次填补将产生一个完全数据集,以此类推,共产生m个完全数据集。(m一般去20左右)

计算:对每一个完全数据集采用标准的完全数据分析方法进行分析。

汇总:将每次分析得到的结果进行综合,得到最终的统计判断。

主要的数据填补方法

根据数据缺失机制、模式以及变量类型,可分别采用回归、预测均数匹配( predictive mean matching, PMM )、趋势得分( propensity score, PS )、Logistic回归、判别分析以及马尔可夫链蒙特卡罗( Markov Chain Monte Carlo, MCMC) 等不同的方法进行填补

强调文本 强调文本

影响准确性的原因

要求数据分布符合多元正态分布假设(研究发现违背了也影响不大)。但还是会有一定的影响。

缺失率:研究表明当数据缺失率达到25%仍然可以得到精确的参数估计结果。换言之不能超过25%的数据缺失。

各位大神,谁能给提点一下怎么在R语言中实现缺失值的处理,不是简单地删除,而是用其他的方法进行填补,数据集为一excel数据,大约1000条数据的样子。求问啊,再网上找了下,把网上的方法粘在这里吧,不过貌似不太对,用不了。求问各路大仙还有没有其他的方法?谢谢啦,急用!网上方法如下:

三、处理缺失数据

删除缺失数据样本,其前提是缺失数据的比例较少,而且缺失数据是随机出现的,这样删除缺失数据后对分析结果影响不大。

用变量均值或中位数来代替缺失值,其优点在于不会减少样本信息,处理简单。但是缺点在于当缺失数据不是随机出现时会产成偏误。

多重插补法(Multiple imputation):多重插补是通过变量间关系来预测缺失数据,利用蒙特卡罗方法生成多个完整数据集,再对这些数据集分别进行分析,最后对这些分析结果进行汇总处理。在R语言中实现方法是使用mice包中的mice函数,生成多个完整数据集存在imp中,再对imp进行线性回归,最后用pool函数对回归结果进行汇总。汇总结果的前面部分和普通回归结果相似,nmis表示了变量中的缺失数据个数,fmi表示fraction of missing information,即由缺失数据贡献的变异。

----------------------

library(mice)

imp=mice(sleep,seed=1234)

fit=with(imp,lm(Dream~Span+Gest))

pooled=pool(fit)

summary(pooled)

当我们在数据集中缺少值时,重要的是考虑为什么它们会丢失以及它们对分析的影响。有时忽略丢失的数据会降低功耗,但更重要的是,有时它会使答案有偏差,并有可能误导错误的结论。因此,重要的是要考虑丢失的数据机制是什么,以便对其进行处理。 Rubin(1976)区分了三种类型的误报机制: