我对为什么我的coef()
函数对于数据中的每个参与者都返回相同的截距和斜率感到困惑。
背景是我在使用anova
函数比较两个由lmer
构建的模型。
模型1如下:
model1 <- lmer(Pen ~ wave + (1 | id), data = no_missing, REML = FALSE)
而模型2则添加了一个感兴趣的变量QEL
,如下所示:
model2 <- lmer(Pen ~ wave + QEL + (1 | id), data = no_missing, REML = FALSE)
当我运行anova(model1, model2)
时,得到了预期的结果。但是,当我查看系数(coef()
)时,问题就出现了。
我想知道为什么每个人的截距和斜率(以下内容)都是相同的?我是否没有正确地组合模型以获得每个人的截距(即它们基于固定效应而非随机效应)?
model1和model2 coef()
输出:
$id
(Intercept) wave
1 74.66694 17.31497
7 74.66694 17.31497
10 74.66694 17.31497
11 74.66694 17.31497
13 74.66694 17.31497
14 74.66694 17.31497
15 74.66694 17.31497
16 74.66694 17.31497
18 74.66694 17.31497
28 74.66694 17.31497
29 74.66694 17.31497
30 74.66694 17.31497
31 74.66694 17.31497
32 74.66694 17.31497
33 74.66694 17.31497
34 74.66694 17.31497
35 74.66694 17.31497
36 74.66694 17.31497
37 74.66694 17.31497
38 74.66694 17.31497
39 74.66694 17.31497
40 74.66694 17.31497
attr(,"class")
[1] "coef.mer"```
> coef(model2)
$id
(Intercept) wave QEL
1 36.8735 16.18188 0.436023
7 36.8735 16.18188 0.436023
10 36.8735 16.18188 0.436023
11 36.8735 16.18188 0.436023
13 36.8735 16.18188 0.436023
14 36.8735 16.18188 0.436023
15 36.8735 16.18188 0.436023
16 36.8735 16.18188 0.436023
18 36.8735 16.18188 0.436023
28 36.8735 16.18188 0.436023
29 36.8735 16.18188 0.436023
30 36.8735 16.18188 0.436023
31 36.8735 16.18188 0.436023
32 36.8735 16.18188 0.436023
33 36.8735 16.18188 0.436023
34 36.8735 16.18188 0.436023
35 36.8735 16.18188 0.436023
36 36.8735 16.18188 0.436023
37 36.8735 16.18188 0.436023
38 36.8735 16.18188 0.436023
39 36.8735 16.18188 0.436023
40 36.8735 16.18188 0.436023
attr(,"class")
[1] "coef.mer"
lmer
会“放弃”,并将所有随机截距调用为零。这经常发生在每个受试者只有少量数据点的情况下。这个统计交流网站上的问题可能会对你有所帮助: https://stats.stackexchange.com/questions/378939/dealing-with-singular-fit-in-mixed-models . 那里提出了一些解决方案。我最喜欢的解决方案是在贝叶斯框架中重新拟合模型,这可以更好地处理小样本大小问题。 - qdread