基于特定列的插补

Imputing based on specific columns

我即将对缺失值进行插补,我使用了 mice-package。我需要根据特定的列内容进行插补。所以基本上,我有 24 列用于测量 4 个潜在变量(使用 plspm-包)。我希望根据特定的列内容估算 N/A。因此,对于第 1-6 列,我希望仅根据这 6 列中的内容来估算那些特定列中的 NA。(对于第 7-12、13-18 和 19-24 列依此类推)。

希望对你们有所帮助。

我的数据结构是:

p1  p2  p3  p4  p5  p6  l1  l2  l3  l4  l5  l6
4   3   5   4   5   N/A 2   1   4   5   1   N/A
4   4   1   3   1   2   1   1   1   1   1   1
5   4   5   4   4   4   4   4   5   5   4   4
5   4   5   5   4   5   4   4   N/A 5   4   4
5   5   5   5   5   5   3   2   5   5   2   2
4   3   4   3   3   3   3   2   3   4   3   2
5   4   5   5   3   4   4   1   5   5   5   4
5   5   5   5   5   5   5   3   4   5   3   4
4   4   4   4   3   N/A 4   4   5   4   3   3
5   4   4   4   3   2   1   3   2   5   1   1
4   4   4   4   5   5   3   4   5   5   3   3
4   3   2   N/A 1   2   N/A 1   2   N/A 1   N/A
3   3   4   4   3   2   1   3   3   3   1   3
5   3   4   4   4   2   3   4   4   4   3   3
4   4   4   5   2   2   2   2   2   2   3   3
5   4   4   4   4   4   4   4   5   5   4   3
4   3   3   3   5   2   2   2   4   4   1   1
5   4   5   4   5   3   1   1   5   5   2   3
4   3   1   3   4   4   2   1   4   3   2   3
4   3   1   4   3   1   2   1   4   4   3   2
3   3   5   4   5   1   2   2   4   5   3   2
4   4   5   3   5   5   2   2   3   4   2   3
4   4   2   3   2   3   2   2   3   4   2   2
5   5   5   5   5   5   4   3   3   3   3   3
5   5   5   5   5   4   4   N/A 5   5   N/A N/A

所以我猜它本质上是将数据分成 4 个块然后进行插补。我在 help(mice) 中读到了 blocks()-function,但我不确定我是否真的可以将它用于这个特定任务。

我目前使用的代码是:

temp_pmm <- mice(data_predict,
                  m = 3,
                  maxit = 10,
                  method = "pmm", 
                  seed = 2374)

但根据我对包的理解,它是根据整行内容进行估算的(因此我的潜在变量构造重叠,我正试图减轻这种情况)。

希望你能帮助我,我很感激任何帮助。 提前致谢!

托比亚斯

所以 Dominix 的简单 运行 单独估算的建议似乎是正确的方法。非常感谢!

对于任何未来的参考,我是这样计算的:

test_pmm_firstv <- mice(data_predict[,c(1:6)],
                      m = 10,
                      maxit = 20,
                      method = "pmm",
                      seed = 127493)

test_pmm_secondv <- mice(data_predict[,c(7:12)],
                      m = 10,
                      maxit = 20,
                      method = "pmm",
                      seed = 1239754111)

test_pmm_thirdv <- mice(data_predict[,c(13:18)],
                      m = 10,
                      maxit = 20,
                      method = "pmm",
                      seed = 1238603)

test_pmm_fourthv <- mice(data_predict[,c(19:24)],
                      m = 10,
                      maxit = 20,
                      method = "pmm",
                      seed = 356811)

data_pmm_firstv <- mice::complete(test_pmm_firstv, 1)
data_pmm_secondv <- mice::complete(test_pmm_secondv, 1)
data_pmm_thirdv <- mice::complete(test_pmm_thirdv, 1)
data_pmm_fourthv <- mice::complete(test_pmm_fourthv, 1)

data_fixed <- as.data.frame(cbind(data_pmm_firstv, data_pmm_secondv, data_pmm_thirdv, data_pmm_fourthv))

anyNA(data_fixed)
[1] FALSE