我对多重插补中的交互项有疑问。我的理解是,插补模型应该包括以后分析中使用的所有信息,包括变量的任何转换或交互(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