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

时间:2018-04-23 09:26:24

标签: r imputation r-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)

我在这里仍然有NAs:

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

如果我在哪里说要对所有价值进行估算,那就有效:

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进行了估算,我不想在这个特定情况下(统计模拟研究中的速度原因)

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

这是因为下面的代码 -

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的缺失值将根据ID&amp; x因为它在y行中的值为1。

现在检查您在x&amp;中填写NA的样本数据。 y列。您可以注意到y NA x的任何地方也具有相同的NA值。

所以会发生的情况是,当micePredictorMatrix列中引用y进行估算时,它会在x中遇到NA并将这些行视为所有独立变量(即{{ 1}}&amp; 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和{ x具有NA值,即第39行(与第一种情况类似)。