如果您在“混合效果”模型中思考群集,那么您应该使用mice
提供的用于群集数据的方法。这些方法可以在manual中找到,通常以2l.something
为前缀。
的各种用于群集数据的方法在mice
会受到一定限制,但我可以推荐使用2l.pan
用于在集群级别缺少下级单元和数据2l.only.norm
。
作为混合效果模型的替代方法,您可以考虑使用虚拟指标来表示聚类结构(即每个聚类的一个虚拟变量)。从混合效应模型的角度来看,这种方法并不理想。因此,如果您想进行混合效果分析,请尽可能使用混合效果模型。
下面,我给出了两种策略的例子。
准备:
library(mice)
data(nhanes)
set.seed(123)
nhanes <- within(nhanes,{
country <- factor(sample(LETTERS[1:10], size=nrow(nhanes), replace=TRUE))
countryID <- as.numeric(country)
})
案例1:使用归责混合效应模型
本节使用2l.pan
缺失数据归咎于三个变量。请注意,我使用clusterID
作为群集变量,方法是在预测矩阵中指定-2
。对于所有其他变量,我只分配固定效果(1
)。
# "empty" imputation as a template
imp0 <- mice(nhanes, maxit=0)
pred1 <- imp0$predictorMatrix
meth1 <- imp0$method
# set imputation procedures
meth1[c("bmi","hyp","chl")] <- "2l.pan"
# set predictor Matrix (mixed-effects models with random intercept
# for countryID and fixed effects otherwise)
pred1[,"country"] <- 0 # don't use country factor
pred1[,"countryID"] <- -2 # use countryID as cluster variable
pred1["bmi", c("age","hyp","chl")] <- c(1,1,1) # fixed effects (bmi)
pred1["hyp", c("age","bmi","chl")] <- c(1,1,1) # fixed effects (hyp)
pred1["chl", c("age","bmi","hyp")] <- c(1,1,1) # fixed effects (chl)
# impute
imp1 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred1, method=meth1)
情况2:使用用于集群
本节使用pmm
用于插补,和群集结构虚设指标(DIS)插补是在“特别”的方式表示。也就是说,聚集不是由随机效应代替,而是由固定效应代替。这可能会夸大由于缺失数据而导致的变量的群集级别变化,因此请确保您知道您在使用它时做了什么。
# create dummy indicator variables
DIs <- with(nhanes, contrasts(country)[country,])
colnames(DIs) <- paste0("country",colnames(DIs))
nhanes <- cbind(nhanes,DIs)
# "empty" imputation as a template
imp0 <- mice(nhanes, maxit=0)
pred2 <- imp0$predictorMatrix
meth2 <- imp0$method
# set imputation procedures
meth2[c("bmi","hyp","chl")] <- "pmm"
# for countryID and fixed effects otherwise)
pred2[,"country"] <- 0 # don't use country factor
pred2[,"countryID"] <- 0 # don't use countryID
pred2[,colnames(DIs)] <- 1 # use dummy indicators
pred2["bmi", c("age","hyp","chl")] <- c(1,1,1) # fixed effects (bmi)
pred2["hyp", c("age","bmi","chl")] <- c(1,1,1) # fixed effects (hyp)
pred2["chl", c("age","bmi","hyp")] <- c(1,1,1) # fixed effects (chl)
# impute
imp2 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred2, method=meth2)
如果你想什么想这些方法读了,看看one或these论文two。
在每个因素水平上运行'鼠标'是一个很好的解决方法?例如,'老鼠(nhanes [nhanes $ country =='A'),],m = 10)',然后循环这些因子或使用您最喜欢的R的groupby操作?这当然假设为国家“A”的数据进行归算,不需要其他国家,即它们是独立的。 –
嗯,是的,我确实尝试过 - 有一个函数可以将数据集的rbind.mids(' - 但我发现这个函数给了我很多警告和错误,我无法弄清楚,最终我认为是用对数据结构的认识会更好,谢谢您的建议 – user2498193