Многоуровневая множественная ошибка вменения MICE 2l.pan: пропущенные значения в пред - PullRequest
1 голос
/ 07 октября 2019

Я использую MICE в R для выполнения многократного вменения многоуровневых данных.

Если только непрерывные данные требуют вменения, я успешно использовал 2l.lmer. Однако дела идут плохо, когда я пытаюсь вписать категориальные данные, то есть данные уровня 2.

(Уровень 1: повторные измерения (в рамках предметов) или субъектов (в классах) Уровень 2: постоянные времени / базовые ковариаты, между субъектамиэффекты, переменные на уровне группы)

Я пытаюсь использовать 2l.pan в сочетании с 2lonly.norm или 2lonly.mean, однако я получаю сообщение об ошибке "пропущенные значения в pred не разрешены".

Я уверен, что это что-то простое.

Пожалуйста, см. Ниже для воспроизводимого примера.

Большое спасибо.

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 голосов
/ 30 октября 2019

Есть две проблемы:

  1. Метод 2lonly.norm() предназначен для числовых переменных и не очень хорошо обрабатывает факторные переменные. Проблема здесь в том, что sex вменяется NA, что вызывает проблему далее в потоке при вменении crp, которая ожидает полный набор предикторов.
  2. Так как мы знаем, что 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)

Надеюсь, это поможет.

...