插补次数和最大迭代次数如何影响多重插补的准确性?

机器算法验证 r 缺失数据 数据插补 多重插补 老鼠
2022-02-09 01:57:22

帮助页面MICE将函数定义为:

mice(data, m = 5, method = vector("character", length = ncol(data)),
  predictorMatrix = (1 - diag(1, ncol(data))),
  visitSequence = (1:ncol(data))[apply(is.na(data), 2, any)],
  form = vector("character", length = ncol(data)),
  post = vector("character", length = ncol(data)), defaultMethod = c("pmm",
  "logreg", "polyreg", "polr"), maxit = 5, diagnostics = TRUE,
  printFlag = TRUE, seed = NA, imputationMethod = NULL,
  defaultImputationMethod = NULL, data.init = NULL, ...)

这些是很多参数。如何决定指定哪些参数以及保留哪些参数作为默认值?

我对多重插补的数量m和最大迭代次数特别感兴趣maxit这些参数如何影响准确性?

换句话说,何时(如何?)——在使用这些参数的同时——我真的可以说已经达到了某种收敛吗?

1个回答

让我们一一浏览参数:

  • data不需要解释
  • m是插补的次数,一般来说越多越好。最初(继 Rubin,1987 年之后)5 被认为是足够的(因此是默认值)。因此,从准确性的角度来看,5 可能就足够了。但是,这仅基于效率论点。为了更好地估计标准误差,需要更多的插补。如今,无论平均缺失百分比是多少,都有一个经验法则——因此,如果数据集中平均有 30% 的缺失数据,请使用 30 个插补——参见 Bodner (2008) 和 White et al (2011)更多细节。
  • method指定要使用的插补方法 - 仅当要覆盖默认方法时才需要。例如,默认情况下,连续数据通过预测均值匹配进行估算,这通常效果很好,但可以指定贝叶斯线性回归和其他几个模型,包括嵌套/聚类数据的多级模型。因此,专家/临床/统计知识可用于指定默认方法的替代方案。
  • predictorMatrix是一个矩阵,它告诉算法哪些变量预测哪些其他变量的缺失。mice如果未指定,则使用基于变量之间相关性和可用案例比例的默认值。专家/临床知识在指定预测矩阵时可能非常有用,因此应谨慎使用默认值。
  • visitSequence指定变量的插补顺序。通常不需要它。
  • form主要用于帮助指定在插补中使用的交互项,通常不需要。
  • post用于插补后处理,例如确保插补正值。这通常不需要。
  • defaultMethod更改默认的插补方法,通常不需要
  • maxit是每个插补的迭代次数。mice使用迭代算法。重要的是所有变量的插补达到收敛,否则它们将不准确。通过检查由此生成的轨迹图,plot()可以直观地确定。与其他 Gibbs 采样方法不同,所需的迭代次数要少得多——根据经验,通常在 20-30 或更少的范围内。当迹线达到一个值并在其周围略有波动时,就达到了收敛。以下是显示健康收敛的示例,取自此处

在此处输入图像描述

在这里,用 5 个插补(彩色线)对 3 个变量进行 20 次迭代(图中的 x 轴),图中的 y 轴是每个插补的插补值。

  • diagnostics默认情况下会产生有用的诊断信息。

  • printFlag默认情况下输出算法进度,这很有用,因为可以轻松确定估计的完成时间。

  • seed是一个随机种子参数,可用于重现性。

  • imputationMethod并且defaultImputationMethod仅用于向后兼容。

Bodner, Todd E. (2008) “随着缺失数据插补的增加有什么改进?” 结构方程建模:多学科期刊 15:651-675。 https://dx.doi.org/10.1080/10705510802339072

Rubin, Donald B. (1987) 调查中不答复的多重插补。纽约:威利。

White、Ian R.、Patrick Royston 和 Angela M. Wood(2011 年)“使用链式方程进行多重插补:问题和实践指南”。医学统计 30:377-399。 https://dx.doi.org/10.1002/sim.4067