如果您将集群视为“混合效应”模型,那么您应该使用mice
为集群数据提供的方法。这些方法可以在手册中找到,通常前缀为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
指定 a 作为集群变量。-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:使用集群的虚拟指标 (DI) 进行插补
本节pmm
用于插补,集群结构以“ad hoc”方式表示。也就是说,聚类不是由随机效应表示,而是由固定效应表示。这可能会夸大缺少数据的变量的集群级可变性,因此请确保您知道在使用它时会做什么。
# 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)
如果您想了解如何看待这些方法,请查看其中一两篇论文。