MICE 2l.pan多级多重插补错误:不允许缺少pred中的值

时间:2019-10-07 09:26:48

标签: r imputation r-mice

我正在MICE中使用R对多级数据进行多次插补。

在仅需要连续数据的情况下,我成功使用2l.lmer。 但是,当我尝试使用分类数据(即2级数据)时,事情就出错了。

(级别1: 重复测量(在科目内)或科目(在班级内) 2级: 时间常数/基线协变量,受试者效应之间,组水平上的变量)

我尝试将2l.pan2lonly.norm2lonly.mean结合使用,但是收到一条错误消息“不允许输入缺少值”。

我确定这很简单。

请参见下面的可复制示例。

非常感谢。

library("mice")
library("pan")

#Not multilevel to illustrate need

set.seed(100)
patid <- rep(1:3, each = 5)
day <- rep(1:5, times = 3)
crp <- c(68, 78, 93, NA, 143, 5,7,9,13,NA, 97, NA, 56, 52, 34)
sex <- rep(c("M", "F", "M"), each = 5)
sex[3] <- NA
alb <- c(23, NA, 22, 21, 20, 33, 32, 32, NA, 30, 19, 20, NA, 22, 24)

raw_data.df <- data.frame(patid, sex, day, crp, alb)

data_mice.df <- mice(raw_data.df, m = 5, maxit = 5)
complete(data_mice.df)


#pt4's crp not well predicted, and pt1 allocated wrong sex, so try multilevel

##multilevel

pred <- data_mice.df$predictorMatrix

pred[,"patid"] <- -2 #identify class variable
pred[,"day"] <- 0 #don't use time
pred


multilevel_mice <- mice(raw_data.df, method = c("","2lonly.norm","","2l.pan","2l.pan"), predictorMatrix = pred, maxit = 5)```


Error message:
iter imp variable
  1   1  sex  crpError in pan::pan(y1, subj, pred, xcol, zcol, prior, seed = s1, iter = paniter) : 
  missing values in pred not allowed

1 个答案:

答案 0 :(得分:0)

有两个问题:

  1. 2lonly.norm()方法适用于数字变量,不能很好地处理因子变量。这里的问题是sex被推算为NA,这在推算crp时会产生一个更深层次的问题,这需要一整套预测变量。
  2. 由于我们知道sexpatid中不会发生变化,因此更合适的方法是2lonly.mean。但是,到目前为止,2lonly.mean也不适用于二级因素。
https://github.com/stefvanbuuren/mice

mice 3.6.4mice.impute.2lonly.mean()扩展到因子。安装此版本后,您应该可以运行

multilevel_mice <- mice(raw_data.df, method = c("","2lonly.mean","","2l.pan","2l.pan"), predictorMatrix = pred, maxit = 5)

希望这会有所帮助。