用 mice() 对特定列进行插补

Imputation of specific columns with mice()

我想通过使用 mice 包来使用数据插补。我的数据集包含列“A”到“G”,但我只想估算列 C 和 D 的值。

在这篇文章 (https://www.r-bloggers.com/2016/06/handling-missing-data-with-mice-package-a-simple-approach/) 中解释了如何 排除 变量作为预测变量或被估算 - 但我想以另一种方式使用鼠标回合:我想指定哪些变量被估算 - 所以只有 C 和 D 应该被估算。

这可能吗?

谢谢!

回答

只需反转逻辑:在方法向量中,将不是您感兴趣的变量之一的每个变量设置为 "":

meth[!names(meth) %in% c("C", "D")] <- ""

示例:仅估算 Petal.LengthPetal.Width

data <- mice::ampute(iris, prop = 0.1)$amp
init <- mice(data, maxit = 0)
meth <- init$meth
meth[!names(meth) %in% c("Petal.Length", "Petal.Width")] <- ""
mice(data, meth = meth)

理由

您可以为 mice::micemethod 参数提供一个向量。该向量应包含您要用于估算要估算的变量的方法。在示例中,他们首先执行 dry-运行 (init <- mice(data, maxit = 0)),其中输出包含您的预设向量 (init$method)。对于我的示例,它看起来像这样:

Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
       "pmm"        "pmm"        "pmm"        "pmm"        "pmm"

您可以通过将方法设置为 "" 来避免变量被估算。这是排除变量的一种方法。正如我在示例中展示的那样,您可以反转该逻辑,从而只得到您想要包含的变量。