MICE 2l.pan multilevel multiple imputation error: missing values in pred not allowed
MICE 2l.pan multilevel multiple imputation error: missing values in pred not allowed
我在 R
中使用 MICE
对多级数据执行多重插补。
在只有连续数据需要插补的情况下,我成功地使用了 2l.lmer。
然而,当我尝试估算分类数据时出现问题,即 2 级数据。
(第 1 级:
重复测量(在受试者内)或受试者(在 类 内)
2 级:
time-constant/baseline 协变量,受试者之间的影响,组水平上的变量)
我正在尝试将 2l.pan
与 2lonly.norm
或 2lonly.mean
结合使用,但是我收到一条错误消息 "missing values in pred not allowed"。
我确定这很简单。
请参阅下面的可重现示例。
非常感谢。
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
手头有两个问题:
2lonly.norm()
方法适用于数字变量,并不能很好地处理因子变量。这里的问题是 sex
被估算 NA
,这会在估算 crp
时导致进一步的问题,这需要一组完整的预测变量。
- 因为我们知道
sex
在 patid
内不会改变,更合适的方法是 2lonly.mean
。但是,直到现在 2lonly.mean
也不适用于二级因素。
mice 3.6.4
在 https://github.com/stefvanbuuren/mice 扩展 mice.impute.2lonly.mean()
到因素。安装此版本后,您应该可以 运行
multilevel_mice <- mice(raw_data.df, method = c("","2lonly.mean","","2l.pan","2l.pan"), predictorMatrix = pred, maxit = 5)
希望这对您有所帮助。
我在 R
中使用 MICE
对多级数据执行多重插补。
在只有连续数据需要插补的情况下,我成功地使用了 2l.lmer。 然而,当我尝试估算分类数据时出现问题,即 2 级数据。
(第 1 级: 重复测量(在受试者内)或受试者(在 类 内) 2 级: time-constant/baseline 协变量,受试者之间的影响,组水平上的变量)
我正在尝试将 2l.pan
与 2lonly.norm
或 2lonly.mean
结合使用,但是我收到一条错误消息 "missing values in pred not allowed"。
我确定这很简单。
请参阅下面的可重现示例。
非常感谢。
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
手头有两个问题:
2lonly.norm()
方法适用于数字变量,并不能很好地处理因子变量。这里的问题是sex
被估算NA
,这会在估算crp
时导致进一步的问题,这需要一组完整的预测变量。- 因为我们知道
sex
在patid
内不会改变,更合适的方法是2lonly.mean
。但是,直到现在2lonly.mean
也不适用于二级因素。
mice 3.6.4
在 https://github.com/stefvanbuuren/mice 扩展 mice.impute.2lonly.mean()
到因素。安装此版本后,您应该可以 运行
multilevel_mice <- mice(raw_data.df, method = c("","2lonly.mean","","2l.pan","2l.pan"), predictorMatrix = pred, maxit = 5)
希望这对您有所帮助。