R 具有交互项的多重插补模型

R 具有交互项的多重插补模型,r,statistics,missing-data,interaction,r-mice,R,Statistics,Missing Data,Interaction,R Mice,根据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 <- i

根据
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)
这里,在原始数据集中创建了一个名为
bmi.chl
的新变量。
meth
步骤说明如何从现有变量中插补此变量。
pred
步骤表示我们不想从
bmi.chl
预测
bmi
chl
。但是现在,如果我们想应用一个模型,我们该如何进行呢?产品是否由
定义“~I((bmi-25)*(chl-200))”
只是一种控制主要影响的插补值的方法,即
bmi
chl

fit2 <- with(data=imp, glm(hyp~chl+bmi+bmi.chl, family="binomial"))
summary(pool(fit2))
如果我们想要拟合的模型是glm(hyp~chl*bmi,family=“binomial”),那么从插补数据中指定该模型的正确方法是什么<代码>fit1或
fit2

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

对于被动插补,使用被动插补变量或在调用
glm
时重新计算产品术语并不重要。 在您的示例中,
fit1
fit2
产生不同结果的原因是,我们不只是对产品术语进行被动插补

相反,您在相乘之前转换两个变量(即,您计算
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
库(鼠标)
nhanes2.ext
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