如何解决使用 lme4 对具有 2 个索引变量的面板数据进行混合效应模型?
我想创建一个由 ID
和 year
索引的线性混合效应模型。我以前从未处理过纵向数据,我不确定如何对我拥有的数据进行建模。
数据集如下所示:
data <- data.frame(ID = c(1,1,2,3,3),year = c(1,4,score1 = c(90,78,92,69,86,73,82,85,91),score2 = c(89,89,72,98,95,94,87,89),score3 = c(91,88,93,90,89))
ID,year,score1,score2,score3
1,91
1,88
1,93
1,89
2,90
2,78
3,87
3,98
3,91,89
数据不平衡(每个 ID
的年数不同)。 year
变量表示观察到特定 ID
的第 n 年。
我想在 score1
上创建一个线性效应模型,作为 score2 + score3
的函数并通过变量 ID
和 year
进行索引。
这是我使用包 lme4
处理代码的方式:
lmer(score1 ~ (score2 + score3 | ID/year),data=data)
这可以在 R 中实现吗?
解决方法
您当前的版本不起作用,但您有几个选择。我相信最大模型是
score1 ~ 1 + score2 + score3 + factor(year) + (1 + score2 + score3 + factor(year) | ID)
评估
-
score2
、score3
和采样序列 (year
) 的人口水平效应 - 截距中个体间的变异(第1年
score1
时score2 == score3 == 0
的预期值);score2
和score3
对score1
的影响;以及采样年份的影响。
这个公式实际上有点过度指定(并且 lmer
会发出警告,您必须使用 control
参数覆盖)因为每个 ID/年组合只有一个观察值,我们为每个效应指定了单独的随机效应 - 因此 year|ID
效应和残差方差是共同无法识别的。
更典型的模型是
score1 ~ 1 + score2 + score3 + factor(year) + (1 + score2 + score3 | ID) + (1|ID:year)
此版本假设年份之间的变化是复合对称,即每年的可变性相同,并且 ID 值内的每一对年份具有相同的相关性。然而,它仍然被过度指定——出于上述相同的原因(即每个 ID/年组合只有一个观察值),(1|ID:year)
项与残差变量混淆。
因此,我会推荐
score1 ~ 1 + score2 + score3 + factor(year) + (1 + score2 + score3 | ID)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。