用 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.Length
和 Petal.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::mice
的 method
参数提供一个向量。该向量应包含您要用于估算要估算的变量的方法。在示例中,他们首先执行 dry-运行 (init <- mice(data, maxit = 0)
),其中输出包含您的预设向量 (init$method
)。对于我的示例,它看起来像这样:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"pmm" "pmm" "pmm" "pmm" "pmm"
您可以通过将方法设置为 ""
来避免变量被估算。这是排除变量的一种方法。正如我在示例中展示的那样,您可以反转该逻辑,从而只得到您想要包含的变量。
我想通过使用 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.Length
和 Petal.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::mice
的 method
参数提供一个向量。该向量应包含您要用于估算要估算的变量的方法。在示例中,他们首先执行 dry-运行 (init <- mice(data, maxit = 0)
),其中输出包含您的预设向量 (init$method
)。对于我的示例,它看起来像这样:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"pmm" "pmm" "pmm" "pmm" "pmm"
您可以通过将方法设置为 ""
来避免变量被估算。这是排除变量的一种方法。正如我在示例中展示的那样,您可以反转该逻辑,从而只得到您想要包含的变量。