我试图创建一个类似于此处的情节:https://stats.stackexchange.com/questions/98958/plots-to-illustrate-results-of-linear-mixed-effect-model
(为便于参考,以下是该链接的代码:
library(nlme)
fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1|Subject)
newdat <- expand.grid(Sex=unique(Orthodont$Sex),
age=c(min(Orthodont$age),
max(Orthodont$age)))
library(ggplot2)
p <- ggplot(Orthodont, aes(x=age, y=distance, colour=Sex)) +
geom_point(size=3) +
geom_line(aes(y=predict(fm2), group=Subject, size="Subjects")) +
geom_line(data=newdat, aes(y=predict(fm2, level=0, newdata=newdat), size="Population")) +
scale_size_manual(name="Predictions", values=c("Subjects"=0.5, "Population"=3)) +
theme_bw(base_size=22)
print(p)
我使用lme4,而不是nlme。根据我的理解,&#39;预测&#39;以下代码中的函数是确定人口级别的预测值。但是,我不确定如何在lme4中模仿这个。
我与参与者交叉刺激。以下是一些示例数据:
Subject Sex StimID StimSex Response
1 1 M 1 M 84
2 1 M 2 M 54
3 1 M 3 F 62
4 1 M 4 F 22
5 1 M 5 F 75
6 2 M 1 M 56
7 2 M 2 M 73
8 2 M 3 F 98
9 2 M 4 F 86
10 2 M 5 F 74
11 3 M 1 M 85
12 3 M 2 M 44
13 3 M 3 F 51
14 3 M 4 F 51
15 3 M 5 F 31
16 4 M 1 M 24
17 4 M 2 M 78
18 4 M 3 F 16
19 4 M 4 F 50
20 4 M 5 F 61
21 5 F 1 M 76
22 5 F 2 M 95
23 5 F 3 F 36
24 5 F 4 F 36
25 5 F 5 F 15
26 6 F 1 M 80
27 6 F 2 M 97
28 6 F 3 F 70
29 6 F 4 F 8
30 6 F 5 F 24
31 7 F 1 M 86
32 7 F 2 M 22
33 7 F 3 F 97
34 7 F 4 F 88
35 8 F 5 F 21
36 8 F 1 M 3
37 8 F 2 M 21
38 8 F 3 F 4
39 8 F 4 F 69
40 8 F 5 F 84
我正在绘制x轴上的刺激性和y轴上的反应。我希望每个参与者的个别行(参与者性别的颜色编码)和两个较粗的行显示男性和女性参与者的人口平均值。这是我的代码:
lmer1<- lmer(Response~StimSex*Sex + (Sex|StimID) + (StimSex|Subject), data = dat)
p1<- ggplot(dat, aes(x=StimSex, y = Response, colour = Sex))+
geom_point(size = 1) +
geom_line(aes(y=predict(lmer1), group = Subject, size = "Subjects"))+
geom_line(aes(y=predict(lmer1), group = Sex, size = "Population Average"))+
scale_size_manual(name="Predictions", values=c("Subjects"=0.5, "Population Average"=2))
p1
这会创建具有单独主题行的情节,但我不确定粗线是否反映了“性别”的平均值。这些数据来自与创建单个主题行的数据相同的数据 - 也就是说,我没有创建新数据(如上例所示)并使用人口级别预测。我只想确保以正确的方式接近这一点。我希望较粗的线条显示所有男性和女性参与者的平均坡度,而不是连接普通女性参与者的线条。对普通女性参与者的女性刺激的反应&#39;对男性刺激的反应(对于男性参与者也是如此) - 我相信在没有多级模型的情况下,每种刺激类型的平均值之间可以显示一条线,因为它忽略了不同的随机斜率。
非常感谢任何建议。谢谢。