【问题标题】:Multiple imputation in R (mice) - How do I test imputation runs?R(小鼠)中的多重插补 - 如何测试插补运行?
【发布时间】:2019-08-04 09:05:13
【问题描述】:

我使用包含 55 个变量的 171 个观察值的数据集,其中 35 个变量具有我想用 mouse 函数估算的 NA:

imp_Data <- mice(Data,m=5,maxit=50,meth='pmm',seed=500)

 imp_Data$imp

现在,运行 5 次插补后,我不知道如何测试并确定 5 次插补中的哪一个最适合我的数据集。

检查我一次又一次地使用带有线性模型的with()函数和pool()函数的脚本:

fit <- with(imp_Data, lm(a ~ b + c + d + e))

 combine <- pool(fit)

但我不明白这个线性模型需要什么以及它如何帮助我找到最佳插补运行。

谁能以简单的方式告诉我如何对 5 个插补进行测试/如何决定选择哪一个?

感谢您的帮助!

【问题讨论】:

    标签: r missing-data imputation r-mice


    【解决方案1】:

    mice 是一个多重插补包。多重插补本身并不是真正的插补算法,而是一个如何插补数据的概念,同时还考虑了插补带来的不确定性。

    如果你只想要一个插补数据集,你可以使用像 VIM 这样的单一插补包(例如函数 irmi()kNN())。 imputeRmissForest 包也适用于单一插补。你输出一个单一的估算数据集。

    如果您仍想使用 mice 并且只想在最后获得 1 个估算数据集,您可以只取 5 个数据集中的任何一个,也可以在 5 个数据集之间取平均值。 p>

    多重插补创建多个插补数据集有更深层次的原因。这背后的想法是,插补本身会引入偏见。您不能真正声称您估算的 NA 值是例如正好是 5。从贝叶斯的角度来看,更正确的答案是,缺失值可能介于 3 和 7 之间。因此,如果将其设置为 5,则会引入偏差。

    Multiple Imputation通过从不同的概率分布中采样来解决这个问题,最终得出多个imputed dataset,基本上都是可能的解决方案。

    多重插补的主要思想是现在获取这五个数据集,将每个数据集视为可能的解决方案,然后对每个数据集进行分析! 之后,您的分析结果(而不是估算的数据集!)将汇集在一起​​​​。

    所以 with() 和 pooling() 部分与创建一个数据集无关,它们是用于将五个分析结果组合在一起的。

    线性模型是许多人应用于数据的一种分析形式。 (他们想分析一些变量与响应变量的关系)。为了得到无偏的结果,这个分析做了5次,然后合并结果。

    因此,如果您不想使用线性模型,则不需要它。因为这部分与数据分析有关,与插补无关。

    【讨论】:

    • 谢谢,这很有帮助!如果我可以使用 5 个插补的中位数会很好,但到目前为止我还没有找到从列表 imp_Data$imp 中提取中位数的方法。你能告诉我怎么做吗?
    • 我还尝试使用本文推荐的 Hmisc 包的 aregImpute() 函数进行估算:analyticsvidhya.com/blog/2016/03/… 它有效,但结果我只得到了估算值的列表而且我不知道如何将它们包含到我的原始数据集中。例如 rbind() 不起作用,因为变量的长度不同。你有什么建议吗?非常感谢!
    • complete() 函数为鼠标执行此操作。查看参数设置的功能帮助。例如。 complete(imp_Data) 使用 m=1 的插补创建一个插补数据集。
    • 是的,我知道,但我认为没有选项可以使用 complete() 函数计算所有估算数据集的中位数。由于数据类不同,因此不能用于 Hmisc 插补。
    猜你喜欢
    • 2021-08-25
    • 2021-07-02
    • 2022-01-14
    • 2018-04-29
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多