use*_*193 4 r multi-level r-mice imputation
因此,我正在使用该mice软件包估算缺少的数据。我是归因于算术的新手,所以我已经讲了一点,但是却遇到了陡峭的学习曲线。举一个玩具的例子:
library(mice)
# Using nhanes dataset as example
df1 <- mice(nhanes, m=10)
Run Code Online (Sandbox Code Playgroud)
因此,如您所见,我使用默认设置大多数情况下估算了df1 10次-我很乐意将此结果用于回归模型,合并结果等。但是在我的实际数据中,我有来自不同国家/地区的调查数据。因此,失踪的程度因国家/地区而异,具体变量的值(即年龄,受教育程度等)的值也不同。因此,我想归纳失踪者,以便按国家进行聚类。因此,我将创建一个没有缺失的分组变量(当然,在此玩具示例中,与其他变量的相关性缺失,但是在我的真实数据中它们存在)
# Create a grouping variable
nhanes$country <- sample(c("A", "B"), size=nrow(nhanes), replace=TRUE)
Run Code Online (Sandbox Code Playgroud)
因此,如何分辨mice()此变量与其他变量不同-即它是多级数据集中的一个级?
如果您考虑“混合效应”模型中的集群,则应使用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)
})
Run Code Online (Sandbox Code Playgroud)
案例1:使用混合效应模型进行插补
本部分用于2l.pan估算缺少数据的三个变量。请注意,我clusterID通过-2在预测变量矩阵中指定a 来用作聚类变量。对于所有其他变量,我仅分配固定效果(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)
Run Code Online (Sandbox Code Playgroud)
情况2:对集群使用虚拟指标(DI)进行插补
本部分pmm用于插补,并且以“临时”方式表示群集结构。也就是说,聚类不是由随机效应而是固定效应表示。这可能会因为缺少数据而夸大了变量的群集级别的可变性,因此请确保您知道使用它时的操作。
# 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)
Run Code Online (Sandbox Code Playgroud)