多种插补中的互动术语(Amelia或其他mi包)

时间:2013-07-13 08:41:53

标签: r missing-data

我对多个插补中的互动术语有疑问。我的理解是,插补模型应该包括在后面的分析中使用的所有信息,包括变量的任何变换或交互(Amelia用户指南也做出这个陈述)。但是,当我在插补中包含互动字词int=x1*x2时,int的估算值不等于x1*x2。例如,当我有一个二进制变量x2和一个连续变量x1时,int为零时x2应为零。对于int的推算值,情况并非如此。那么如何处理多个插补中的交互?下面是一些说明问题的示例代码。

library("Amelia")

n = 100
p.na = 0.1
n.na = ceiling(n*p.na)
set.seed(12345)
# create data
df = data.frame(
    'x1' = rnorm(n),
    'x2' = rbinom(n,1,0.5),
    'int'= NA
)
df$x1[sample(1:100,n.na)]=NA
df$x1[sample(1:100,n.na)]=NA
df$int = with(df,x1*x2)
# impute
df.mi = amelia(df,m=2,noms=c("x2"))

# comparison
round(cbind(df,df.mi$imputations[[1]])[1:10,],2)
cbind(
    'df' = with(df,int==x1*x2),
    'df.mi' = with(df.mi$imputations[[1]],int==x1*x2))

一些输出(第6行是上面讨论的int!=x1*x2

的案例之一
      DF           DF (imputed)
      x1 x2   int    x1 x2   int
1   0.59  1  0.59  0.59  1  0.59
2   0.71  1  0.71  0.71  1  0.71
3  -0.11  0  0.00 -0.11  0  0.00
4  -0.45  1 -0.45 -0.45  1 -0.45
5   0.61  1  0.61  0.61  1  0.61
6     NA  1    NA  0.24  1  0.48
7   0.63  0  0.00  0.63  0  0.00
8  -0.28  0  0.00 -0.28  0  0.00
9  -0.28  1 -0.28 -0.28  1 -0.28
10 -0.92  1 -0.92 -0.92  1 -0.92

1 个答案:

答案 0 :(得分:2)

我认为,在任何情况下,您都会向Amelia提供信息,即int是转换的结果,x1 * x2。因此它将其视为一个简单的变量。 但您可以在插补数据中执行后转换,如下所示:

   df.mi = transform(df.mi, int = x2*x1)

与原始数据相比,您会得到以下结果:

mm <- cbind(df,df.mi$imputations$imp1)
mm[mm$x2==0 & is.na(mm$int),]
   x1 x2 int         x1 x2 int
45 NA  0  NA  0.3144084  0   0
49 NA  0  NA -1.1741704  0   0
76 NA  0  NA -0.2018450  0   0

编辑我认为使用mice包得到更好的结果:

  

“算法通过以下方式计算不完整的列(目标列)   在给定的其他列中生成“似是而非的”合成值   数据“。

使用您的数据,当x2等于0时,我将原始data.frame与所有插补数据集进行比较。

library(mice)
rr <- mice(df)
mm1 <- cbind(df,do.call(cbind,lapply(1:5,function(i)complete(rr , i))))
mm1[mm1$x2==0 & is.na(mm1$int),]

  x1 x2 int        x1 x2       int        x1 x2        int         x1 x2       int        x1 x2       int        x1 x2        int
20 NA  0  NA 0.5168547  0 -0.162311 0.6203798  0  0.0000000  0.8881394  0 0.0000000 0.9371405  0 0.8248701 0.5855288  0  0.0000000
23 NA  0  NA 0.5168547  0  0.000000 0.4911883  0  0.0000000 -1.8323773  0 0.0000000 0.5855288  0 0.0000000 0.5855288  0  0.0000000
31 NA  0  NA 0.5168547  0  0.000000 0.1495920  0 -0.3240866  2.3305120  0 1.6324456 1.1207127  0 0.8544517 0.5674033  0  0.0000000
60 NA  0  NA 0.5365237  0  0.000000 0.2542712  0  0.0000000  1.5934885  0 0.9371405 0.7094660  0 0.5168547 0.2542712  0 -0.3079534