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