【问题标题】:R mice function does not apply customized predictor matrixR 鼠标功能不应用自定义预测矩阵
【发布时间】:2019-10-16 21:49:07
【问题描述】:

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

我的问题:我不希望始终对每个变量进行估算, 因为我有几个测量点。所以当然,我的变量 在 t4 有很多缺失,但我不想当人们归咎于他们 只是当时还没有填写问卷。

所以我指定了一个预测矩阵,其中 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的人应该被估算,那些不在那个测量点的人不应该被估算。 如果有人对如何实现这一点有任何想法,那就太好了!

非常感谢!

【问题讨论】:

    标签: r imputation r-mice


    【解决方案1】:

    在“mice”中,除了将“predMatrix”指定为零之外,还必须为那些变量在“method”中指定(“”)。

    【讨论】:

      【解决方案2】:

      我不完全确定我是否 100% 了解您要归档的内容。

      我明白,您不想估算所有变量(但您想将所有变量作为算法的输入)

      您试图定义参数 predictorMatrix

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

      在我看来,这个参数是用来定义什么变量用作输入的。 相比之下,where 参数在我看来是指定应该估算哪些变量的正确参数。

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

      所以我的结论是尝试 where 参数而不是 predictorMatrix。

      【讨论】:

        猜你喜欢
        • 2014-01-06
        • 2015-11-18
        • 2023-03-30
        • 2013-04-12
        • 2020-07-31
        • 2023-01-21
        • 2013-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多