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