小鼠:使用 where 参数失败的部分插补

Mice: partial imputation using where argument failing

我在使用 mice 函数进行多重插补时遇到问题。我只想对部分缺失数据进行插补,查看帮助似乎是可能且直接的。但我无法让它工作。 这是示例:

我在 x 和 y 上缺少一些数据:

library(mice)
plouf <- data.frame(ID = rep(LETTERS[1:10],each = 10), x = sample(10,100,replace = T), y = sample(10,100,replace = T))
plouf[sample(100,10),c("x","y")] <- NA

我只想估算 y 上的缺失数据:

where <- data.frame(ID = rep(FALSE,100),x = rep(FALSE,100),y = is.na(plouf$y))

我做插补

plouf.imp <- mice(plouf, m = 1,method="pmm",maxit=5,where = where)

我看看推算值:

test <- complete(plouf.imp)

这里我在 y 上还有 NA:

> sum(is.na(test$y))
[1] 10

如果我使用 where to say 来估算所有值,它会起作用:

where <- data.frame(ID = rep(FALSE,100),x = is.na(plouf$x),y = is.na(plouf$y))
plouf.imp <- mice(plouf, m = 1,method="pmm",maxit=5,where = where)
test <- complete(plouf.imp)

> sum(is.na(test$y))
[1] 0

但它也对 x 进行插补,我不希望在这种特定情况下(统计模拟研究中的速度原因)

有人知道吗?

发生这种情况是因为以下代码 -

plouf[sample(100,10),c("x","y")] <- NA

让我们考虑第一个案例,其中您只想估算 y。检查它是 PredictorMatrix

plouf.imp <- mice(plouf, m = 1, method="pmm", maxit=5, where = whr)
plouf.imp
#PredictorMatrix:
#   ID x y
#ID  0 0 0
#x   0 0 0
#y   1 1 0

它说 y 的缺失值将根据 IDx 进行预测,因为它的值在第 y 行中为 1。

现在检查您在 xy 列中填充 NA 的样本数据。您会注意到 y 为 NA 的任何地方 x 也具有相同的 NA 值。

所以发生的事情是,当 micey 列中引用 PredictorMatrix 进行插补时,它在 x 中遇到 NA 并忽略这些行作为所有自变量(即ID & x) 预计是非缺失的,以便预测结果,即 y.

中的缺失值

试试这个 -

library(mice)

#sample data
set.seed(123)
plouf <- data.frame(ID = rep(LETTERS[1:10],each = 10), x = sample(10,100,replace = T), y = sample(10,100,replace = T))
plouf[sample(100,10), "x"] <- NA
set.seed(999)
plouf[sample(100,10), "y"] <- NA

#missing value imputation
whr <- data.frame(ID = rep(FALSE,100), x = rep(FALSE,100), y = is.na(plouf$y))
plouf.imp <- mice(plouf, m = 1, method="pmm", maxit=5, where = whr)
test <- complete(plouf.imp)
sum(is.na(test$y))
#[1] 1

这里只有一个 y 的值被估算,在这种情况下 xy 都具有 NA 值,即第 39 行(类似于您的第一个案例).