我正在尝试在具有纵向设计的数据集中填补数据。有两个预测变量(实验组和时间)和一个结果变量(得分)。群集变量是id。
以下是玩具数据
set.seed(345)
A0 <- rnorm(4,2,.5)
B0 <- rnorm(4,2+3,.5)
A1 <- rnorm(4,6,.5)
B1 <- rnorm(4,6+2,.5)
A2 <- rnorm(4,10,.5)
B2 <- rnorm(4,10+1,.5)
A3 <- rnorm(4,14,.5)
B3 <- rnorm(4,14+0,.5)
score <- c(A0,B0,A1,B1,A2,B2,A3,B3)
id <- rep(1:8,times = 4, length = 32)
time <- rep(0:3, each = 8, length = 32)
group <- rep(c("A","B"), times =2, each = 4, length = 32)
df <- data.frame(id = id, group = group, time = time, score = score)
# plots
(ggplot(df, aes(x = time, y = score, group = group)) +
stat_summary(fun.y = "mean", geom = "line", aes(linetype = group)) +
stat_summary(fun.y = "mean", geom = "point", aes(shape = group), size = 3) +
coord_cartesian(ylim = c(0,18)))
# now place some NAs
df[sample(1:nrow(df), 10, replace = F),"score"] <- NA
df
如果我正确理解了这篇文章,在预测矩阵中,我应该使用-2
指定id
聚类变量,并使用1
指定两个固定的预测变量time
和group
。如下所示:
library(mice)
(ini <- mice(df, maxit=0))
(pred <- ini$predictorMatrix)
(pred["score",] <- c(-2, 1, 1, 0))
(imp <- mice(df,
method = c("", "", "", "2l.pan"),
pred = pred,
maxit = 1,
seed = 71152))
我想知道的是:
- 这是一个纵向随机截距插补模型吗?将id变量指定为
-2
将其标识为“类”变量,但在这个mice入门指南中,建议对于多层级模型,您应该在数据框中创建一个全为1
的变量作为常数,然后通过预测矩阵中的2
指定为随机截距。然而,这是基于2l.norm
函数而不是2l.pan
函数,所以我真的不确定我在这里的位置。2l.pan
函数是否需要此列或随机效应的指定? - 是否有任何方法可以指定纵向随机斜率模型,如果有,如何指定?