【问题标题】:Multiple imputation for missing values in RR中缺失值的多重插补
【发布时间】:2016-07-11 00:29:33
【问题描述】:

我想使用插补来替换我的数据集中的缺失值。我有一些限制,例如我不希望估算变量x1 小于我的其他两个变量的总和,比如说x2 and x3。我还希望x30 or 14 or >= 14 and 估算,x2 由0 or 16 or >= 16 估算。我试图在 spss 中定义这些约束,例如用于多重插补,但在 spss 中我只能定义最大值和最小值。有什么方法可以在 spss 中定义进一步的约束,或者你知道任何 R 包可以让我定义这些约束来估算缺失值吗?

   x1 =c(21, 50, 31, 15, 36, 82, 14, 14, 19, 18, 16, 36, 583, NA,NA,NA, 50, 52, 26, 24)
   x2 = c(0, NA, 18,0, 19, 0, NA, 0, 0, 0, 0, 0, 0,NA,NA, NA, 22, NA, 0, 0)
   x3 = c(0, 0, 0, 0, 0, 54, 0 ,0, 0, 0, 0, 0, 0, NA, NA, NA, NA, 0, 0, 0)
   dat=data.frame(x1=x1, x2=x2, x3=x3)
   > dat
       x1 x2 x3
   1   21  0  0
   2   50 NA  0
   3   31 18  0
   4   15  0  0
   5   36 19  0
   6   82  0 54
   7   14 NA  0
   8   14  0  0
   9   19  0  0
   10  18  0  0
   11  16  0  0
   12  36  0  0
   13 583  0  0
   14  NA NA NA
   15  NA NA NA
   16  NA NA NA
   17  50 22 NA
   18  52 NA  0
   19  26  0  0
   20  24  0  0

【问题讨论】:

  • 这绝对是可能的,但演示答案需要一些数据,所以请提供一些示例数据。
  • 你只有整数值吗?
  • @托马斯。我提供了样本数据。
  • 你的意思是你只想要值来填充那些满足约束的 NA,但你不知道这些值到底是什么?

标签: r spss


【解决方案1】:

如果你只有整数值,你可以这样做:

N <- 5
set.seed(1)
dat <- data.frame(x1 = sample(1:10,N,rep=TRUE),
                    x2 = sample(1:10,N,rep=TRUE),
                    x3 = sample(c(1,NA),N,rep=TRUE))

> dat
  x1 x2 x3
1  3  9  1
2  4 10  1
3  6  7 NA
4 10  7  1
5  3  1 NA
## x3 < sum(x1,x2)
transform(dat,x3 =ifelse(is.na(x3),sample(seq(x1+x2-1),1),x3))
  x1 x2 x3
1  3  9  1
2  4 10  1
3  6  7  3
4 10  7  1
5  3  1  3
## x3 in c(0,14)
transform(dat,x3 =ifelse(is.na(x3),sample(c(0,14),1),x3))
  x1 x2 x3
1  3  9  1
2  4 10  1
3  6  7 14
4 10  7  1
5  3  1 14

【讨论】:

    【解决方案2】:

    嗯,你当然可以在 SPSS 中使用简单的转换逻辑来做到这一点,但我认为人们会希望基于已知值的分布进行插补。

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 2018-08-14
      • 2013-07-08
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      相关资源
      最近更新 更多