R小鼠功能不适用于定制的预测矩阵

时间:2019-05-31 08:56:28

标签: r imputation r-mice

我想用小鼠来估算我的部分数据。我的数据集有很多变量,这就是为什么我不想只推算我将在模型中使用的那些变量的原因。 (我知道应该为插补使用尽可能多的信息,但是我已经使用了41个变量,根据文献,这应该绰绰有余了。)

  

我的问题:我不希望所有变量都始终插补,   因为我有几个测量点所以,当然,我的变量   在第4时刻有很多失踪者,但是当人们   只是当时还没有填写问卷。

因此我指定了一个预测变量矩阵,其中推算了t0处的所有变量(例如A103.0),而不是t4处的所有变量(A103.4)。 但是,在运行鼠标时,它仅对所有变量使用“ pmm”,并且会推算每个变量。

任何关于出了什么问题的建议都受到高度赞赏,我现在花了很多时间试图找出发生了什么。

这就是我所做的:

我创建了一个我想插入的所有列的对象

impute <- c("A103", "A104", "A107", #SVF
            "A302.0", "A303.0", "A304.0", "A305.0", "A306.0",
            "A502_01.0", "A502_02.0", "A502_03.0", "A502_04.0",
            "A504.0","A506.0", "A508.0", "W003.0", "W005.0", 
            "A509_02.0", "A509_03.0", "A509_06.0", "A509_10.0",
            "A302.4", "A303.4", "A304.4", "A305.4", "A306.4", 
            "A502_01.4", "A502_02.4", "A502_03.4", "A502_04.4", 
            "A504.4", "A506.4", "A508.4","W003.4", "W005.4", "SD02_01",
            "SD03",
            "A509_02.4", "A509_03.4", "A509_06.4", "A509_10.4")

我创建了要插入的列(当然还有所有行)的子集

imp <- mice(ds_wide[ ,impute], maxit=0)
imp$PredictorMatrix

pred <- imp$predictorMatrix

pred [c("A302.4", "A303.4", "A304.4", "A305.4", "A306.4", #ABB.4
      "A502_01.4", "A502_02.4", "A502_03.4", "A502_04.4", #PSWQ.4
      "A504.4", "A506.4", "A508.4","W003.4", "W005.4", "SD02_01",
      "SD03",
      "A509_02.4", "A509_03.4", "A509_06.4", "A509_10.4"), ] <- 0

View(pred) #looks exactly how I want it to look like

imp <- mice(ds_wide[ ,impute], m=5, predictorMatrix = pred)
miceimp <- complete (imp)
anyNA(miceimp)
View(miceimp)

当我检查miceimp(我的结果)时,没有任何遗漏值,因此即使我另外指定,也将估算t4处的所有变量。我做错了什么?

实际上,对我来说真正地最好的是,如果我能以某种方式在t4估算那些不仅没有缺失的变量。因此,应该对那些填写了t4的人进行估算,而那些不在那个测量点的人则不应这样做。 如果有人对如何实现这一点有任何想法,那就太好了!

非常感谢!

2 个答案:

答案 0 :(得分:0)

我不确定我100%理解您要归档的内容。

我了解到,您不想估算所有变量(但您想将所有变量都包括进算法中)

您正在尝试定义参数 predictorMatrix

  

predictorMatrix
  长度(块)行和ncol(数据)列的数字矩阵,其中包含0/1数据,该数据指定要用于每个目标列的一组预测变量。每行对应一个变量块,即一组要推算的变量。值为1意味着列变量用作目标块(行中)的预测变量。默认情况下,predictorMatrix是一个ncol(data)行和列的方阵,对角线除外,全为1。注意:对于两级插补模型(名称中带有“ 2l”的情况),也可以使用其他代码(例如2或-2)。

对我来说,我听起来像是使用此参数来定义什么变量用作输入。 相比之下, where 参数在我看来是正确的参数,用于指定应估算的变量。

  

位置   具有与数据相同维度的逻辑的数据框或矩阵,指示应在数据中的何处创建插补。默认值,其中= = is.na(data),指定应估算缺少的数据。 where参数可用于过分估算观测到的数据,或跳过对所选缺失值的估算。

所以我的结论是尝试使用 where 参数而不是预测变量Matrix。

答案 1 :(得分:0)

在“鼠标”中,除了将不应该插入的变量的“ predMatrix”指定为零外,还必须在“方法”中的这些变量中指定(“”)。