График прогнозных значений из продольного анализа lmer - PullRequest
0 голосов
/ 07 июня 2018

Я анализирую некоторые продольные данные, используя пакет lme4 (lmer function) с 3 Levels: точки измерения, вложенные в людей, вложенных в домашние хозяйства.Меня интересуют линейные и нелинейные кривые изменения, связанные с конкретным жизненным событием.В моей модели есть много предикторов времени (указывающих на линейное изменение до и после события и указывающих на нелинейное изменение (т. Е. Квадратные переменные времени) до и после события).Кроме того, у меня есть несколько предикторов уровня 2, которые не меняются со временем (т.е. черты личности) и некоторые контрольные переменные (например, возраст, пол).До сих пор я не включал никаких случайных уклонов или межуровневых взаимодействий.

Это код моей модели:

model.RI <- lmer(outcome ~ time + female_c + age_c + age_c2 + preLin + preLin.sq + postLin + postLin.sq + per1.c + per2.c + per3.c + per4.c + per5.c + (1 | ID) +  (1 | House))

исход = моя зависимая переменная

time = year 1, year 2, year 3 ... (until year 9);эта переменная символизирует что-то вроде эффекта тестирования

female_c = gender centered

age_c = age centered

age_c2 = age squared centered

preLin = time variable, указывающего время до события (эта переменная равна 0 после события и равна -1, например, за год до события, -2 двагоды до события и т. д.)

preLin.sq = squared values of preLin

postLin = time variable, указывающий время после события (эта переменная равна 0 до события и увеличивается после события; например, +1 через год после события)

postLin.sq = squared values of postLin

per1.c until per5.c = personality traits on Level 2 (centered)

ID = indicating the individuum

House = indicating the household

Мне было интересно, как я могу построить прогнозные значения этой lmer модели (например, используя ggplot2?).Я построил кривые изменения, используя method=gam в R. Это довольно управляемый данными метод для проверки данных без предварительного определения, является ли кривая линейной, квадратичной или какой-либо другой.Теперь я хотел бы проверить, сопоставима ли моя параметрическая модель lmer с управляемой данными gam-plot, которая у меня уже есть.Есть ли у вас какие-либо советы, как это сделать?

Я был бы более чем рад получить помощь по этому вопросу!Пожалуйста, не стесняйтесь спрашивать, не был ли я достаточно точен в объяснении того, что я хотел бы сделать!

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

Перейдите по этой ссылке: Вот как мойgam-plot выглядит так, и я надеюсь получить что-то похожее при построении прогнозных значений моей модели lmer!

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете использовать функцию ggpredict() из пакета ggeffects .Если вы хотите построить прогнозируемые значения времени (preLin), вы просто напишите:

ggpredict(model.RI, "preLin")

Функция возвращает фрейм данных (см. статьи ), который вы можете использоватьв ggplot, но вы также можете напрямую отобразить результаты:

ggpredict(model.RI, "preLin") %>% plot()

или

p <- ggpredict(model.RI, "preLin")
plot(p)

Вы также можете использовать sjPlot-package , однако для маргинальногоэффекты / прогнозируемые значения, функция sjPlot::plot_model() внутренне просто вызывает ggeffects::ggpredict(), поэтому результаты в основном будут идентичны.

Еще одно примечание к вашей модели: если у вас есть продольные данные, вы должны также включать свое времяпеременный как случайный уклон.Я не уверен, как postLin в точности относится к preLin, но если preLin фиксирует все ваши измерения, вы должны по крайней мере написать свою модель следующим образом:

model.RI <- lmer(
  outcome ~ time + female_c + age_c + age_c2 + preLin + preLin.sq + 
  postLin + postLin.sq + per1.c + per2.c + per3.c + per4.c + per5.c + 
  (1 + preLin | ID) +  (1 + preLin | House)
)

Если вы также предполагаетеквадратичный тренд для каждого человека (ID), вы даже можете добавить квадрат в виде случайного наклона.

Как показывает пример с использованием сплайнов, вы также можете попробовать это:

library(splines)
model.RI <- lmer(
  outcome ~ time + female_c + age_c + age_c2 + bs(preLin) 
  postLin + postLin.sq + per1.c + per2.c + per3.c + per4.c + per5.c + 
  (1 + preLin | ID) +  (1 + preLin | House)
)
p <- ggpredict(model.RI, "preLin")
plot(p)

Примеры сплайнов также демонстрируются на веб-сайте, о котором я упоминал выше.

Редактировать: Еще одно примечание связано с вложенностью: в настоящее время вы моделируете полностью пересеченную или перекрестно классифицированную модель.Если он полностью вложенный, случайные части будут выглядеть так:

... + (1 + preLin | House / ID)

(см. Также этот небольшой пример кода ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...