MICE 的多重插补提供两倍于预期的行数

Multiple imputation with MICE provides twice the expected number of rows

我 运行 以下代码用于估算 2120 个观测值的 10 个数据帧。

我期望得到一个10 X 2120 = 21200个观测值的长数据帧,但我得到了42400个观测值,整个过程好像运行两次。前 3 列如下所示。

这不是什么大问题,因为我可以对前半部分进行子集化,但我想知道是否有人对此有解释。我的代码有问题吗?

谢谢

for (group in 0:1) {
  predictor.selection <- quickpred(imputed_df, mincor=0.1, minpuc=0.5,method='pearson',
                                   exclude=c("idme"))
  imputation <- mice(imputed_df, m=10, method="pmm", visitSequence="monotone",
                     predictorMatrix = predictor.selection)
 
  long.imputation = rbind(long.imputation,complete(imputation, action="long"))
} ````

row#   .imp   .id    idme
1       1       1     5001
2       1       2     5002
3       1       3     5003
4       1       4     5004
...
2121    1       2120   8288
2122    2       1      5001
2123    2       2      5002
2124    2       3      5003
...
21200  10      2120   8288
21201   1       1     5001
21202   1       2     5002
21203   1       3     5003
21204   1       4     5004
...
23320   1       2120   8288
23321   2       1      5001
23322   2       2      5002
23324   2       3      5003
...
42400  10      2120   8288

由于 group 值 (0:1) 未在循环中使用,因此使用 lapply/replicate 将是一个不错的选择。

imputed_dataset <- function() {
  predictor.selection <- quickpred(imputed_df, mincor=0.1, minpuc=0.5,method='pearson',
                                   exclude=c("idme"))
  imputation <- mice(imputed_df, m=10, method="pmm", visitSequence="monotone",
                     predictorMatrix = predictor.selection)
  return(imputation)
}

result <- do.call(rbind, replicate(2, imputed_dataset(), simplify = FALSE))
result