Случайные эффекты в моделях продольного многоуровневого вменения с использованием MICE

Я пытаюсь приписать данные в наборе данных с продольным дизайном. Существует два предиктора (экспериментальная группа и время) и одна переменная результата (оценка). Переменная кластеризации - это id.

Вот данные игрушки

set.seed(345)
A0 <- rnorm(4,2,.5)
B0 <- rnorm(4,2+3,.5)
A1 <- rnorm(4,6,.5)
B1 <- rnorm(4,6+2,.5)
A2 <- rnorm(4,10,.5)
B2 <- rnorm(4,10+1,.5)
A3 <- rnorm(4,14,.5)
B3 <- rnorm(4,14+0,.5)
score <- c(A0,B0,A1,B1,A2,B2,A3,B3)
id <- rep(1:8,times = 4, length = 32)
time <- rep(0:3, each = 8, length = 32)
group <- rep(c("A","B"), times =2, each = 4, length = 32)
df <- data.frame(id = id, group = group, time = time,  score = score)

# plots
(ggplot(df, aes(x = time, y = score, group = group)) + 
    stat_summary(fun.y = "mean", geom = "line", aes(linetype = group)) +
    stat_summary(fun.y = "mean", geom = "point", aes(shape = group), size = 3) +
    coord_cartesian(ylim = c(0,18)))

# now place some NAs
df[sample(1:nrow(df), 10, replace = F),"score"] <- NA

df

Если я правильно понимаю этот пост, в матрице предикторов я должен указать id кластеризованная переменная с -2 и два фиксированных предиктора time а также group с 1, Вот так

library(mice)

(ini <- mice(df, maxit=0))
(pred <- ini$predictorMatrix)
(pred["score",] <- c(-2, 1, 1, 0))
(imp <- mice(df, 
            method = c("", "", "", "2l.pan"),
            pred = pred, 
            maxit = 1, 
            seed = 71152))

Что я хотел бы знать, это:

  1. Это продольная случайная перехватывает модель вменения? Указание переменной id как -2 обозначает его как переменную класса, но в этом учебнике мышей предлагается, чтобы для многоуровневых моделей вы создали переменную всех 1находится в кадре данных как константа, которая затем указывается как случайный перехват через 2 в матрице предиктора. Однако (I) это основано на 2l.norm функция, а не 2l.pan функции, поэтому я не совсем уверен, где я здесь. Ли 2l.pan Функция не требует этого столбца или спецификации случайных эффектов?
  2. Есть ли способ указать продольную модель случайных уклонов, и если да, то как?

2 ответа

Решение

Этот ответ, вероятно, немного запоздал для вас, но он может помочь некоторым людям, которые читают это в будущем:

Как работать с 2l.pan

Ниже приведены некоторые подробности об определении многоуровневых моделей вменения с mice, Поскольку приложение является продольным, я использую термин "лица" для обозначения единиц на уровне 2. Это наиболее важные аргументы для 2l.pan как упоминалось в mice документация:

type

Вектор длины ncol(x) выявление случайных и классовых переменных. Случайные эффекты идентифицируются 2, Групповая переменная (допускается только одна) кодируется как -2, Случайные эффекты также включают в себя фиксированный эффект. Если для ковариат X1 групповые средние должны быть рассчитаны и включены в качестве дальнейших фиксированных эффектов 3, В дополнение к эффектам в 3, Спецификация 4 также включает в себя случайные эффекты X1,

В матрице предикторов можно использовать 5 различных кодов для переменных, вмененных 2l.pan, Идентификатор человека закодирован как -2 (это отличается от 2l.norm). Чтобы включить предикторные переменные с фиксированными или случайными эффектами, эти переменные кодируются 1 или же 2соответственно. Если закодировано как 2соответствующий фиксированный эффект автоматически включается.

К тому же, 2l.pan предлагает коды 3 а также 4, которые имеют сходные значения как 1 а также 2 но будет включать дополнительный фиксированный эффект для среднего значения этой переменной. Это полезно, если вы пытаетесь смоделировать влияние изменяющихся во времени предикторов во времени и между людьми.

intercept

Логическое определение, автоматически ли добавляется перехват.

По умолчанию, 2l.pan включает перехват как фиксированный, так и случайный эффект. По этой причине нет необходимости включать постоянный член в матрицу предиктора. Если один устанавливает intercept=FALSE, это поведение изменяется, и перехват удаляется из модели вменения.

groupcenter.slope

Если TRUEв случае групповых средств (type является 3 или же 4) групповое среднее центрирование для этих предикторов проводится перед выполнением вменений. По умолчанию FALSE,

Используя эту опцию, можно центрировать переменные предиктора вокруг среднего значения человека вместо того, чтобы включать переменную предиктора "как есть" (т.е. без центрирования). Это относится только к переменным, закодированным как 3 или же 4, Для предикторов, закодированных как 3это не очень важно, потому что модели с центрированием и без него идентичны.

Тем не менее, когда предикторные переменные кодируются как 4 (то есть со случайным наклоном), затем центрирование изменяет значение случайного эффекта, так что случайный наклон больше не относится к переменной "как есть", а к внутреннему отклонению этой переменной.


В вашем примере вы можете включить простой случайный уклон для time следующее:

library(mice)
ini <- mice(df, maxit=0)

# predictor matrix (following 'type')
pred <- ini$predictorMatrix
pred["score",] <- c(-2, 1, 2, 0)

# imputation method
meth <- c("", "", "", "2l.pan")

imp <- mice(df, method=meth, pred=pred, maxit=10, m=10)

В этом примере кодирование time как 3 или же 4 не имеет большого смысла, потому что человек означает time идентичны для всех лиц. Однако, если у вас есть изменяющиеся во времени ковариаты, которые вы хотите включить в качестве переменных предиктора в модель вменения, 3 а также 4 может быть полезным

Дополнительные аргументы, такие как intercept а также groupcenter.slope можно указать прямо в вызове mice(), например:

imp <- mice(df, ..., groupcenter.slope=TRUE)

По поводу ваших вопросов

Итак, чтобы ответить на ваши вопросы, как указано в сообщении:

1) да, 2l.pan предоставляет многоуровневую (точнее двухуровневую) модель вменения. Перехват включен как фиксированный и случайный эффект по умолчанию (может быть изменен с intercept=FALSE) и не нужно указывать в матрице предиктора (это в отличие от 2l.norm).

2) Да, вы можете указать случайные уклоны с 2l.pan, Для этого предикторы со случайными наклонами кодируются как 2 или же 4 в матрице предиктора. Если закодировано как 2, случайный наклон включен. Если закодировано как 4, случайный наклон включен, а также дополнительный фиксированный эффект для лица средства этой переменной. Если закодировано как 4значение случайного наклона может быть изменено путем использования groupcenter.slope=TRUE (см. выше).

Эта статья также включает в себя несколько примеров того, как работать с 2l.pan и другие функции для взаимного вменения: [Ссылка]

pan библиотека не требует термина перехвата.

Вы можете покопаться в функции, используя

library(pan)
?pan

Что сказал mice использует обертку вокруг кастрюли mice.impute.2l.pan с mice библиотека загружена, вы можете посмотреть на помощь для этой функции. В нем говорится: у него есть параметры, называемые intercept который [a] Logical [and] determin[es] whether the intercept is automatically added. Это ИСТИНА по умолчанию. Это определяется как случайный перехват по умолчанию. Обнаружил это после просмотра кода R для оболочки мышей:

if (intercept) { x <- cbind(1, as.matrix(x)) type <- c(2, type) }

Где pan параметр функции type это Vector of length ncol(x) identifying random and class variables, Перехват добавляется по умолчанию и определяется как случайный эффект.

Они предоставляют и пример, как вы указали с 1 для "х" в матрице прогнозирования для фиксированных эффектов.

Это также заявляет для 2l.norm, The random intercept is automatically added in mice.impute.2l.norm().

Есть несколько примеров с описаниями. Документация CRAN для pan может помочь тебе

Другие вопросы по тегам