多重插补为啥要汇总分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多重插补为啥要汇总分析相关的知识,希望对你有一定的参考价值。

参考技术A 是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%的数据缺失。

如何在小鼠多重插补后创建相关矩阵

【中文标题】如何在小鼠多重插补后创建相关矩阵【英文标题】:How to create correlation matrix after mice multiple imputation 【发布时间】:2021-05-06 19:56:44 【问题描述】:

我正在使用mice 包来创建多个插补。我想创建一个相关矩阵(以及相关系数的 p 值矩阵。我使用miceadds::micombine.cor 来执行此操作。但这会给出一个数据框,其中包含变量的第一列,然后是一些包含 r、p、t 值等的列。

我正在寻找一种方法将此数据框转换为“旧”矩阵,其中 x 和 y 在位置 [x,y] 之间的相关系数,以及具有 p 值的矩阵有没有人有一个简单的方法这样做?

这里有一些代码可以重现:

data <- mtcars
mt.mis <- prodNA(mtcars, noNA = 0.1)
imputed     <-mice(iris.mis, m = 5, maxit = 5, method = "pmm")
correlations<- miceadds::micombine.cor(mi.res=iris.mis, variables = c(1:3))

我正在寻找类似于 cor(mtcars) 的输出。谁能帮忙?

【问题讨论】:

【参考方案1】:

我最终编写了自己的函数。可能可以更有效地完成,但这是我所做的。

cormatrix <- function(r, N)
  x <- 1
  cormatrix <- matrix(nrow = N, ncol = N)  # create empty matrix
  for (i in 1:N) 
  for (j in i:N) 
    if(j>i)
    cormatrix[i,j] <- r[x]
    cormatrix[j,i] <- r[x]
    x <- x + 1
    
  

diag(cormatrix) <- 1
cormatrix

您可以使用 micombine.cor 的输出和模型中的变量数作为参数来调用它。例如 cormatrix(correlations$r,ncol(df))。

【讨论】:

以上是关于多重插补为啥要汇总分析的主要内容,如果未能解决你的问题,请参考以下文章

绘制多重插补结果

我在做多重响应分析时,为啥我编辑好变量之后,在定义变量集时在左侧列表框里没有变量呀。求解,谢谢。

单元无回答的缺失数据处理方法

Matlab:对缺失数据的多重插补

如何在小鼠多重插补后创建相关矩阵

使用通过 MICE 进行多重插补开发的模型预测新观察结果的响应