我在R中使用Mice包来多次插入多级数据,其中重复测量嵌套在个体内 . 但是在小鼠中存在一个错误,我们需要将组变量(此处为个体)转换为整数类型,以便使用“mice.2l.norm / mice.2l.pan”方法对小鼠进行插补以考虑聚类 .

(我无法发布我的数据的快照)我的分组变量(STIDnum)是一个因子变量,因为我想检查插补前后的ICC值

对于Imputation我已将STIDnum转换为整数变量,但问题是如何在插补后将其重新转换为mids对象中的因子?这是我用来计算ICC的代码

data.frame(vars = names(w[c(6:10)]),
       observed = c(ICC1(aov(meanscore~STIDnum,w)),
                    ICC1(aov(otdif~STIDnum,w)),
                    ICC1(aov(pros~STIDnum,w)),
                    ICC1(aov(otdif_T~STIDnum,w)),
                    ICC1(aov(pros_T~STIDnum,w))),
       norm = c(ICC1(aov(meanscore~STIDnum,complete(imp1))),
                    ICC1(aov(otdif~STIDnum,complete(imp1))),
                    ICC1(aov(pros~STIDnum,complete(imp1))),
                    ICC1(aov(otdif_T~STIDnum,complete(imp1))),
                    ICC1(aov(pros_T~STIDnum,complete(imp1)))))

这是我用于多重插补的代码

w1<-subset(w,!is.na(Grade))
w1$studentid<-NA
ini<-mice(w1,maxit = 0)
pred<-ini$pred
pred[c("STIDnum","RCT_GROUP","Female","Time","Grade","studentid"),]=0
meth<-ini$method
meth["Grade"]<-""
meth["otdif"]<-"2l.pan"
meth["pros"]<-"2l.pan"
meth["otdif_T"]<-"2l.pan"
meth["pros_T"]<-"2l.pan"
meth["pros"]<-"2l.pan"
meth["meanscore"]<-"2l.pan"
meth["studentid"]<-"~I(as.character(STIDnum))" 
meth["studentid"]<-"~I(as.numeric(studentid))"

pred["otdif",]=c(-2,1,1,1,2,0,1,1,1,1,0)
pred["pros",]=c(-2,1,1,1,2,1,0,1,1,1,0)
pred["otdif_T",]=c(-2,1,1,1,2,1,1,0,1,1,0)
pred["pros_T",]=c(-2,1,1,1,2,1,1,1,0,1,0)
pred["meanscore",]=c(-2,1,1,1,2,1,1,1,1,0,0)

w1$STIDnum<-as.character(w1$STIDnum)
w1$STIDnum<-as.integer(w$STIDnum)
impmultilevel<-mice::mice(data=w1,maxit=10,m=30,imputationMethod = meth,
                      predictorMatrix = pred)

我也收到一个警告 - 记录事件的数量:插补后的1 .

PS:我是一个有多重插词的初学者,请原谅我这些是显而易见的问题 . 我也开始了解被动插补,它作为mids的变异,我尝试过也创建一个新变量,并将它的方法定义为“~I(as.factor(STIDnum))”,但它给出了所有情况的NA . 有没有其他方法来比较观察/估算数据的ICC和我们应该使用什么方法,如果估算数据的ICC小于观察数据 . 谢谢提前 .