2016-10-13 3 views
0

Я пытаюсь проанализировать некоторые моделированные продольные данные в R с использованием модели смешанных эффектов (lme4).Анализ продольных данных со смешанной моделью эффектов в R

Имитированные данные: 25 предметов должны выполнять 2 задания в 5 последовательных временных точках.

#Simulate longitudinal data 
N <- 25 
t <- 5 
x <- rep(1:t,N) 

#task1 
beta1 <- 4 
e1 <- rnorm(N*t, mean = 0, sd = 1.5) 
y1 <- 1 + x * beta1 + e1 

#task2 
beta2 <- 1.5 
e2 <- rnorm(N*t, mean = 0, sd = 1) 
y2 <- 1 + x * beta2 + e2 

data1 <- data.frame(id=factor(rep(1:N, each=t)), day = x, y = y1, task=rep(c("task1"),length(y1))) 
data2 <- data.frame(id=factor(rep(1:N, each=t)), day = x, y = y2, task=rep(c("task2"),length(y2))) 
data <- rbind(data1, data2) 

Question1: Как анализировать, как субъект узнает каждую задачу?

library(lme4) 
m1 <- lmer(y ~ day + (1 | id), data=data1) 
summary(m1) 

... 
Fixed effects: 
      Estimate Std. Error  df t value Pr(>|t|)  
(Intercept) 1.2757  0.3561 123.0000 3.582 0.000489 *** 
day   3.9299  0.1074 123.0000 36.603 < 2e-16 *** 

С ranef(m1) я получаю случайный перехват для каждого предмета, который я думаю, отражает базовое значение для каждого предмета в день = 1. Но я не понимаю, как я могу сказать, как человек узнает задание, или субъекты отличаются тем, как они изучают задачу.

Question2: Как я могу проанализировать, отличаются ли способы изучения предметов между task1 и task2.

ответ

2

Я расширил ваш пример, чтобы кратко ответить на ваши вопросы, но я могу порекомендовать прочитать главу 15 из Snijders & Bosker (2012) или книгу от Singer & Willet (2003) для лучшего объяснения. День рассматривается как непрерывная переменная в вашей модели, видя, что у вас есть данные панели (т.е. каждый измеряется в тот же день), и день не имеет никакого значения, кроме указания разных случаев измерения, может быть лучше рассматривать день как фактор (т. е. использовать фиктивные переменные). Тем не менее, на данный момент я продолжу ваш пример

Ваша первая модель (я думаю, вы хотите, чтобы данные были вдавлены в данные1) дает фиксированный линейный уклон (т. Е. Средний наклон, без разницы в задачах, без разницы между отдельными лицами). Фиксированный перехват - это производительность, когда день равен 0, что не имеет смысла, поэтому вы можете рассмотреть возможность центрирования эффекта дня для лучшей интерпретации (или, действительно, использования манекенов). Случайный эффект дает индивидуальное отклонение от этого перехвата, который имеет оценочную дисперсию 0,00 в вашем примере, чтобы люди практически не отличались друг от друга в исходном положении.

m1 <- lmer(y ~ day + (1 | id), data=data) 
summary(m1) 
Random effects: 
Groups Name  Variance Std.Dev. 
id  (Intercept) 0.00 0.000 
Residual    18.54 4.306 
Number of obs: 250, groups: id, 25 

Мы можем расширить эту модель, добавив взаимодействие с задачей. Это означает, что фиксированный наклон отличается для task1 и TASK2, который отвечает вопрос 2 Я считаю, (вы также можете использовать update() обновить модель)

m2 <- lmer(y ~ day*task + (1|id), data = data) 
summary(m2) 

Эффектом дня в этой модели является фиксированным наклоном справки категории (task1), а взаимодействие - это разность между наклоном задачи 1 и задачей2. Фиксированный эффект задачи - разница в перехвате. модель подходит, можно оценить с помощью теста на отклонение, прочитать Snijders & Boskers (2012) для объяснения оценок ML и REML.

anova(m1,m2) 

Чтобы добавить случайный эффект для роста индивидов мы можем обновлять модель снова, которая отвечает на вопрос 1

m3 <- lmer(y ~ day*task + (day|id), data = data) 
summary(m3) 
ranef(m3) 

Случайные эффекты показывают индивидуальные отклонения в крутизны и перехвата. Краткое описание распределения ваших случайных эффектов включено в сводку модели (то же, что и для m1). Наконец, я думаю, что вы можете добавить случайный эффект для взаимодействия с день-задачами, чтобы оценить, отличаются ли люди от роста их производительности на task1 и task2. Но это во многом зависит от ваших данных и от производительности предыдущих моделей.

m4 <- lmer(y ~ day*task + (day*task|id), data = data) 
summary(m4) 
ranef(m4) 

Надеюсь, это поможет. Книги, которые я рекомендовал, конечно же должны. Оба являются отличными примерами и объяснением теории (к сожалению, нет примеров R). Если вы решите модель фиксированного случая (эффект дня, выраженный манекенами), пакет nlme предоставляет отличные возможности для управления ковариационной структурой случайных эффектов. Хорошая документация на упаковку предоставляется Pinheiro & Bates (2000).

Смежные вопросы