我正在尝试对具有交叉分类嵌套的数据集执行多重插补(即,数据嵌套在两个不相互嵌套的不同分组变量中;下面代码中的 group1 和 group2)。为了解释多级结构,我在miceadds 包中使用了method="2l.pmm"。但是,当我运行代码时,我收到一条错误消息:
“z0* u[index_clus, 1:NR, drop = FALSE] 中的错误:不一致的数组
我想知道为什么我会收到这条消息。
我试图估算的完整数据集有 279 行和 188 列。因为我在研究中采用了计划缺失,所以其中大约 120 列需要插补。为了缩小错误代码的原因,我尝试将数据集大大减少为两个分组变量和几个其他变量。当我添加第二个分组变量(group2)作为预测变量时,似乎出现了问题。
library(mice)
library(miceadds)
#Partial dataset
dat <- data.frame(
group1 = #Grouping variable 1
c(44,17,12,3,19,28,28,16,47,33,28,42,50,38,22,33,15,44,33,28,7,47,38,16,49,23,11,17,28,50,49,17,38,31,28,49,17,22,26,11,45,10,26,7,60,7,17,37,44,16),
group2 = #Grouping variable 2
c(34,26,40,6,40,9,11,40,36,36,9,39,36,36,36,36,36,36,36,7,3,40,4,40,7,36,36,26,11,36,7,40,36,11,9,7,26,40,36,36,36,31,36,19,31,19,36,7,36,11),
VarA = #Response to a survey item
c(3,2,3,NA,NA,5,4,4,NA,2,3,NA,NA,4,4,3,NA,3,3,NA,2,NA,NA,2,NA,4,NA,NA,5,NA,NA,4,4,NA,4,5,2,4,1,NA,2,3,NA,NA,4,3,NA,2,2,NA),
VarB = #Response to another survey item
c(4,NA,NA,3,2,3,1,NA,3,2,NA,5,2,NA,2,NA,1,2,NA,2,NA,NA,NA,3,4,NA,2,NA,NA,NA,2,3,4,4,4,4,2,NA,NA,2,1,3,2,2,3,3,NA,NA,1,4))
#Imputation method
medat <- make.method(dat)
medat[c("group1","group2","VarA","VarB")] <- c("","","2l.pmm","2l.pmm")
#Predictor matrix
mepred <- make.predictorMatrix(dat)
mepred[c("VarA","VarB"),c("group1","group2")] <- -2
mepred[c("group1","group2")] <- 0
#Imputation
impdat <- mice(dat,method=medat,predictorMatrix=mepred,m=5,maxit=5,seed=5000)
我怀疑错误可能是由于某些组的样本量仅为 1;但是,当包含的变量只有 group1、VarA 和 VarB 时,代码会运行。group1 的某些级别的样本大小仅为 1,因此这似乎不是问题。
可能导致错误的代码或数据集有哪些潜在问题?任何输入将不胜感激!