3

複数代入における交互作用項について質問があります。私の理解では、代入モデルには、変数の変換や相互作用を含む、後の分析で使用されるすべての情報が含まれているはずです (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 は、上記で説明したケースの 1 つです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