使用R中的混合效应模型分析纵向数据

时间:2016-10-13 15:16:30

标签: r lme4 mixed-models

我尝试使用混合效应模型(lme4包)分析R中的一些模拟纵向数据。

模拟数据:25名受试者必须在连续5个时间点执行2项任务。

#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)

问题1 :如何分析主题如何学习每项任务?

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天的基线值。但我不明白我怎么能告诉个人如何学习任务,或者受试者在学习任务的方式上是否有所不同。

问题2:如何分析主题在task1和task2之间的学习方式是否有所不同。

1 个答案:

答案 0 :(得分:2)

我扩展了您的示例以简要回答您的问题,但我建议您阅读Snijders & Bosker (2012)的第15章或Singer & Willet (2003)的书籍以获得更好的解释。在您的模型中,日被视为连续变量,因为您有面板数据(即每个人都在同一天进行测量),除了指示不同的测量时间之外,日没有意义,将日视为一个因素可能更好(即使用虚拟变量)。 但是,现在我将继续您的示例

你的第一个模型(我想你想要data1的数据读取)给出一个固定的线性斜率(即平均斜率,任务没有差异,个体之间没有差异)。固定截距是当天为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)的固定斜率,而交互是task1和task2的斜率之间的差异。任务的固定效果是截距的差异。 模型拟合可以通过偏差测试进行评估,阅读Snijders&amp; Boskers(2012)对ML和REML估计的解释。

anova(m1,m2)

要为个体的成长添加随机效果,我们可以再次更新模型,这可以回答问题1

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

随机效应表明斜率和截距的个体偏差。随机效应分布的摘要包含在模型摘要中(与m1相同)。 最后,我认为您可以在日常任务交互中添加随机效果,以评估个人在任务1和任务2上的绩效增长是否存在差异。但这在很大程度上取决于您的数据和以前型号的性能。

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

希望这会有所帮助。我推荐的书应该是。两者都提供了很好的例子和理论解释(不幸的是没有R例子)。如果您决定固定场合模型(由假人表示的日期效果),nlme包提供了控制随机效应的协方差结构的出色选项。 Pinheiro & Bates (2000)提供了包的良好文档。