根据特定列进行插补

时间:2019-08-07 09:00:39

标签: r imputation

我将为缺少的值进行归因,并且我使用mouses-package。我需要根据特定的列内容进行估算。因此,基本上,我有24列用于测量4个潜在变量(使用plspm包)。我希望根据特定的列内容来估算不适用。因此,对于第1列至第6列,我希望仅根据这6列中的内容来估算这些特定列中的NA(第7-12列,第13-18列和第19列等等)。

我希望这对你们有意义。

我的数据结构是:

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(鼠标)中读到关于blocks()函数的信息,但是我不确定我是否可以将其实际用于此特定任务。

到目前为止,我一直在使用的代码是:

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

但是根据我对软件包的理解,它是基于整个行的内容进行插补的(因此我的潜在变量构造重叠了,我正在尝试缓解这种情况)。

希望您能帮助我,感谢您的帮助。 预先感谢!

Tobias

1 个答案:

答案 0 :(得分:0)

因此,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