MICE LoggedEvents 是什么意思?

6

我正在尝试使用R语言中的mice函数(来自同名包)进行多重插补。但我收到了一个警告,提示已经记录了事件。下面是我的MWE (请参见下文)中从mice(.)$loggedEvents得到的输出:

it im dep meth out
 1  1   X  pmm   H

我不确定是什么原因导致了这个警告以及其影响。据我所知,这可能是由于变量之间的共线性引起的,但应该通过使用remove_collinear=FALSE来预防,但这并没有解决警告。

MWE:

Pop <- data.frame(X = c(   NA, 0.02, -1.15,  0.54, -0.61, -2.07),
                  Z = c( 0.83, 1.40, -3.07, -0.07, -0.20, -1.90),
                  D = c(    0,    0,     0,     1,     0,     0),
                  H = c( 0.01, 0.01,  0.01,  0.01,  0.02,  0.02))
Pop.Imp <- mice(Pop, m = 1, maxit = 1, print = T)

显然,我的原始问题涉及更多的数据行和列,以及更高数量的插补和迭代,但我已经成功地缩小了范围,找到了这个MWE。

任何帮助解决这个问题的建议都将是非常有用的。当决定是否存在共线性时,mice是否使用某种截止值?如果这个值非常高,是否会覆盖remove_collinear=FALSE参数?


这不是一个错误,只是一个警告。 "mice"正在执行它的工作。 - Colibri
2个回答

2

这不是一个完整的答案,但我无法在评论中回复。

记录的事件警告可能由各种问题引起。可以从mice() $ loggedEvents输出中的“meth”列中确定所提出的问题。

我知道的两个问题是共线性和所有值上的常量预测器(或者在所有缺失/未缺失的情况下也满足此标准的常量)。添加了一些变量来突出这些问题:

Pop <- data.frame(X = c(   NA, 0.02, -1.15,  0.54, -0.61, -2.07,   NA),
                  Z1 = c( 0.83, 1.40, -3.07, -0.07, -0.20, -1.90, 2.00),
                  Z2 = c( 0.83, 1.40, -3.07, -0.07, -0.20, -1.90, 2.00),
                  D = c(    0,    0,     0,     1,     0,     0,    1),
                  H = c( 0.01, 0.01,  0.01,  0.01,  0.02,  0.02, 0.02))
Pop.Imp <- mice(Pop, m = 1, maxit = 1, print = T)

Pop.Imp$loggedEvents

  it im dep      meth out
1  0  0     collinear  Z2
2  1  1   X       pmm   H

Pop <- data.frame(X = c(   NA, 0.02, -1.15,  0.54, -0.61, -2.07,   NA),
                  Z1 = c( 0.83, 1.40, -3.07, -0.07, -0.20, -1.90, 2.00),
                  consvar = c( 0.83, 0.83, 0.83, 0.83, 0.83, 0.83, 0.83),
                  D = c(    0,    0,     0,     1,     0,     0,    1),
                  H = c( 0.01, 0.01,  0.01,  0.01,  0.02,  0.02, 0.02))
Pop.Imp <- mice(Pop, m = 1, maxit = 1, print = T)

Pop.Imp$loggedEvents

  it im dep     meth     out
1  0  0     constant consvar
2  1  1   X      pmm       H

很遗憾,我不知道“pmm”问题是什么。也许与预测平均匹配(选择的替代方法)无法在如此小的数据集中工作有关?

0

它显示了由于使用的插补方法而进行了多少次和哪些次移除。如果问题是共线性,那么应该通过'remove.collinear = FALSE'来覆盖移除操作,但我认为这样做不明智。您还可以尝试使用另一种方法来处理此变量。

您的输出显示,由于方法pmm,"H"被排除作为X的预测因子。

pmm是所使用的预测均值匹配方法。

mice包还有一个很好的函数可以自动设置预测因子,也许这可以解决问题:

predictors <- qickpred(data)

imps <- mice(data = data, method = "pmm", predictorMatrix = predictors, m = 5, maxit = 1)

另一个建议是在下一步中检查自动方法并进行适应。
begin <- mice(data = data, maxit = 0)
meth <- begin$meth
View(as.matrix(meth))
meth[,c("X", "Z", "D"] <- "pmm"  

请参阅此处:https://stefvanbuuren.name/fimd/sec-modelform.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接