如果您想到了“混合效应”模型中的聚类,那么您应该使用
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
作为聚类变量,并在预测矩阵中指定了-2
。对于所有其他变量,我仅分配固定效应(1
)。
imp0 <- mice(nhanes, maxit=0)
pred1 <- imp0$predictorMatrix
meth1 <- imp0$method
meth1[c("bmi","hyp","chl")] <- "2l.pan"
pred1[,"country"] <- 0
pred1[,"countryID"] <- -2
pred1["bmi", c("age","hyp","chl")] <- c(1,1,1)
pred1["hyp", c("age","bmi","chl")] <- c(1,1,1)
pred1["chl", c("age","bmi","hyp")] <- c(1,1,1)
imp1 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred1, method=meth1)
案例2:使用虚拟指标(DIs)对集群进行插补
本节使用pmm
进行插补,且聚类结构以“临时”方式表示。也就是说,聚类并不是由随机效应表示,而是由固定效应表示。这可能会夸大具有缺失数据的变量的聚类级别的变异性,因此在使用时请确保您知道自己在做什么。
DIs <- with(nhanes, contrasts(country)[country,])
colnames(DIs) <- paste0("country",colnames(DIs))
nhanes <- cbind(nhanes,DIs)
imp0 <- mice(nhanes, maxit=0)
pred2 <- imp0$predictorMatrix
meth2 <- imp0$method
meth2[c("bmi","hyp","chl")] <- "pmm"
pred2[,"country"] <- 0
pred2[,"countryID"] <- 0
pred2[,colnames(DIs)] <- 1
pred2["bmi", c("age","hyp","chl")] <- c(1,1,1)
pred2["hyp", c("age","bmi","chl")] <- c(1,1,1)
pred2["chl", c("age","bmi","hyp")] <- c(1,1,1)
imp2 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred2, method=meth2)
如果您想了解这些方法的详细信息,请查看其中之一或其中两篇论文。