дизайн и синтаксис смешанных моделей в R - PullRequest
0 голосов
/ 25 мая 2020

Я новичок в анализе смешанных моделей. Может ли кто-нибудь помочь мне прояснить ситуацию?

У меня следующий план повторных измерений: предварительный тест - вмешательство - пост тест.

Varaibles: Go_rt - время реакции. pre_post - категориальная переменная (pre-test; post-test) ожидание - ожидания участников.

У меня есть следующий код R, в котором я хочу применить смешанную модель для оценки статистически различающегося времени реакции (до теста и после теста). Кроме того, я хочу узнать, есть ли взаимодействие с ожиданиями участников.

mod <- lmer (Go_rt ~ pre_post + ожиданий + pre_post: ожиданий + (1 | участник), data = data, REML = FALSE) </em>

В чем я сомневаюсь о том, нужно ли указывать переменную pre_post в случайной части. Таким образом, код будет выглядеть так:

mod1 <- lmer (Go_rt ~ pre_post + ожиданий + pre_post: ожиданий + (1+ pre_post | участник), data = data, REML = FALSE) </em>

А что изменится, если вот так поменять?

mod2 <- lmer (Go_rt ~ pre_post + ожиданий + pre_post: ожиданий + (1 | участник) + (1 | pre_post), data = data, REML = FALSE) </em>

На самом деле mod2 дает мне значимые результаты для эффекта взаимодействия, тогда как mod и mod1 - нет.

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Не совсем понятно, о чем вы спрашиваете, кажется, что вы не уверены в том, что вам следует моделировать, что является статистическим вопросом и может быть более подходящим для перекрестной проверки, но также кажется, что вы не уверены в Синтаксис R (или, скорее, пакета lme4).

Ознакомьтесь с этим https://arxiv.org/pdf/1406.5823.pdf исчерпывающим руководством по использованию lme4, в частности, страница 6 будет полезна для понимания синтаксиса случайных эффектов. Из этого документа:

"Каждый член случайных эффектов имеет форму (expr | factor). Выражение expr оценивается как формула линейной модели, создавая матрицу модели по тем же правилам, что и в стандартные функции моделирования R (например, lm или glm). Коэффициент выражения оценивается как коэффициент R "

Если у вас есть термины RE, указанные следующим образом: (1|participant) + (1|pre_post) это означает, что RE пересекаются (см. статью PeerJ ниже), тогда как pre_post + (1+ pre_post|participant) является коррелированным отрезком и наклоном (см. страницу 6 в ссылке выше).

Я согласен с @sjp, что вы не хотите использовать случайный эффект для чего-то всего с двумя уровнями. В этом документе, который является прекрасным введением в смешанные модели, предлагается иметь как минимум 5 уровней: https://peerj.com/articles/4794/

Альтернатива @sjp предложения по преобразованию данных журнала, которая может работать для данных пробного времени следует использовать функцию glmer() с аргументом family=gamma, но в любом случае полезно проверить графики остатков на соответствие модели http://www.sthda.com/english/articles/39-regression-model-diagnostics/161-linear-regression-assumptions-and-diagnostics-in-r-essentials/.

В случае, если вам действительно не нужен член случайных эффектов, тогда базовые функции R lm и glm заменят lmer и glmer соответственно.

0 голосов
/ 26 мая 2020

Если я правильно понимаю ваш вопрос, вы не хотите, чтобы для вашего обращения (до / после) был случайный перехват. Это не какой-то шум, который нужно учитывать sh, а ваш экспериментальный вопрос, поэтому mod2 отсутствует. Кроме того, у вас действительно не должно быть случайного эффекта, который имеет только два уровня (https://dynamicecology.wordpress.com/2015/11/04/is-it-a-fixed-or-random-effect/).

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

data$pre_post = relevel(data$pre_post, ref="pre")

Что касается времени реакции, во многих дисциплинах также принято моделировать время реакции журнала, это можно легко сделать, поместив его в формулу модели. , что я сделал ниже. Если это не так в вашей области, не стесняйтесь игнорировать это.

Также возможно, что expectations по-разному влияет на ваших участников, поэтому вы также можете добавить случайный наклон для expectations по участнику. Во-первых, я хотел бы проверить, приводит ли первый случайный наклон, pre_post, к значительно лучшему соответствию модели. Я бы сделал это с помощью следующего кода. Обратите внимание, что REML был изменен на true, потому что вы сейчас сравниваете случайные эффекты.

mod1 <- lmer(log(Go_rt) ~ pre_post + expectations + pre_post:expectations + (1|participant), data=data, REML=TRUE)

mod1.1 <- lmer(log(Go_rt) ~ pre_post + expectations + (1 + pre_post|participant), data=data, REML=TRUE)
anova(mod1, mod1.1)

Если это действительно приведет к лучшей модели, я бы оставил его. Затем я бы проверил, есть ли случайный наклон for expectations улучшает модель.

mod1.2 <- lmer(log(Go_rt) ~ pre_post + expectations + (1 + pre_post + expectations|participant), data=data, REML=TRUE)
anova(mod1.1, mod1.2)

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

Надеюсь, это поможет. Есть и другие способы взглянуть на случайные эффекты и посмотреть, оправданы они или нет, используя функцию rePCA(), включенную в lme4. Вероятно, неплохо было бы изучить этот документ, если вы устанавливаете смешанные модели: https://arxiv.org/pdf/1506.04967.pdf

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