3

我对多重插补中的交互项有疑问。我的理解是,插补模型应该包括以后分析中使用的所有信息,包括变量的任何转换或交互(Amelia 用户指南也有此声明)。但是当我在插补中包含交互项int=x1*x2时,插补值int不等于x1*x2。例如,当我有一个二元变量x2和一个连续变量时x1int当为零时应该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
4

1 回答 1

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包获得更好的结果:

“该算法通过在给定数据中的其他列的情况下生成‘似是而非的’合成值来估算一个不完整的列(目标列)。”

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

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
于 2013-07-13T09:19:56.930 回答