3

パッケージのドキュメントによると、mice相互作用項に関心があるときにデータを代入したい場合は、受動的代入を使用する必要があります。これは次の方法で行われます。

library(mice)
nhanes2.ext <- cbind(nhanes2, bmi.chl = NA)
ini <- mice(nhanes2.ext, max = 0, print = FALSE)

meth <- ini$meth
meth["bmi.chl"] <- "~I((bmi-25)*(chl-200))"

pred <- ini$pred
pred[c("bmi", "chl"), "bmi.chl"] <- 0

imp <- mice(nhanes2.ext, meth = meth, pred = pred, seed = 51600, print = FALSE)

と言われている

Imputations created in this way preserve the interaction of bmi with chl

ここでは、元のデータセットに という新しい変数bmi.chlが作成されます。このmethステップは、この変数を既存の変数からどのように代入する必要があるかを示します。このステップは、 とからpred予測したくないことを示しています。しかし、モデルを適用したい場合、どのように進めればよいでしょうか? によって定義される積は、主効果の帰属値、つまりおよびを制御するための単なる方法ですか?bmichlbmi.chl"~I((bmi-25)*(chl-200))"bmichl

当てはめたいモデルが でglm(hyp~chl*bmi, family="binomial")ある場合、帰属データからこのモデルを指定する正しい方法は何ですか? fit1またはfit2

fit1 <- with(data=imp, glm(hyp~chl*bmi, family="binomial"))
summary(pool(fit1))

それとも、作成された新しい変数の代入値を何らかの形で使用する必要がありますbmi.chlか?

fit2 <- with(data=imp, glm(hyp~chl+bmi+bmi.chl, family="binomial"))
summary(pool(fit2))
4

1 に答える 1

3

受動的代入では、受動的に代入された変数を使用するか、 への呼び出しで積項を再計算するかは問題ではありませんglmfit1あなたの例で と が異なる結果をfit2もたらす理由は、積項に対して受動的な代入を行っているだけではないためです。

代わりに、乗算する前に 2 つの変数を変換します (つまり、 と を計算bmi-25しますchl-100)。その結果、受動的に代入された変数は、積項ではbmi.chlなく を表します。bmi*chl(bmi-25)*(chl-200)

単に積項を計算するfit1と、次fit2のように同じ結果が得られます。

library(mice)
nhanes2.ext <- cbind(nhanes2, bmi.chl = NA)
ini <- mice(nhanes2.ext, max = 0, print = FALSE)

meth <- ini$meth
meth["bmi.chl"] <- "~I(bmi*chl)"

pred <- ini$pred
pred[c("bmi", "chl"), "bmi.chl"] <- 0
pred[c("hyp"), "bmi.chl"] <- 1

imp <- mice(nhanes2.ext, meth = meth, pred = pred, seed = 51600, print = FALSE)

fit1 <- with(data=imp, glm(hyp~chl*bmi, family="binomial"))
summary(pool(fit1))
# > round(summary(pool(fit1)),2)
#                est    se     t    df Pr(>|t|)   lo 95 hi 95 nmis  fmi lambda
# (Intercept) -23.94 38.03 -0.63 10.23     0.54 -108.43 60.54   NA 0.41   0.30
# chl           0.10  0.18  0.58  9.71     0.58   -0.30  0.51   10 0.43   0.32
# bmi           0.70  1.41  0.49 10.25     0.63   -2.44  3.83    9 0.41   0.30
# chl:bmi       0.00  0.01 -0.47  9.67     0.65   -0.02  0.01   NA 0.43   0.33

fit2 <- with(data=imp, glm(hyp~chl+bmi+bmi.chl, family="binomial"))
summary(pool(fit2))
# > round(summary(pool(fit2)),2)
#                est    se     t    df Pr(>|t|)   lo 95 hi 95 nmis  fmi lambda
# (Intercept) -23.94 38.03 -0.63 10.23     0.54 -108.43 60.54   NA 0.41   0.30
# chl           0.10  0.18  0.58  9.71     0.58   -0.30  0.51   10 0.43   0.32
# bmi           0.70  1.41  0.49 10.25     0.63   -2.44  3.83    9 0.41   0.30
# bmi.chl       0.00  0.01 -0.47  9.67     0.65   -0.02  0.01   25 0.43   0.33

~I(bmi*chl)inmicebmi*chlinglmはまったく同じことを行うため、これは驚くべきことではありません。2 つの変数の積を計算するだけです。

述べる:

bmi.chlを代入するときに予測子として使用する必要があるという行を追加したことに注意してくださいhyp。このステップがなければ、代入モデルは積項を無視し、分析モデルと一致しないため、受動的代入には意味がありません。

于 2015-11-28T00:26:38.533 に答える