下面是我的数据集的一个例子:
df <- data.frame(
id = c(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65),
collection_point = c(rep(c("Baseline", "Immediate", "3M"), each=28)),
intervention = c(rep(c("B", "A", "C", "B", "C", "A", "A", "B", "A", "C", "B", "C",
"A", "A", "B", "A", "C", "B", "C", "A", "A"), each = 4)),
scale_A = c(6.5, 7.0, 6.25, 6.0, NA, 7.5, 7.5,
8.0, 7.5, 6.75, 7.5, 6.75, 6.75, 6.5,
5.75, 6.75, 7.75, 7.5, 7.75, 7.25, 7.75,
7.25, 7.25, 5.75, 6.75, NA, 6.75, 7.5,
6.75, 7.0, 6.5, 7.0, 7.5, 7.5, 7.5,
7.75, 7.25, 7.25, 7.25, 7.5, 6.5, 6.25,
6.25, 7.25, 7.5, 6.75, 7.25, 7.25, 7.5,
7.25, 7.5, 7.25, NA, 7.0, 7.5, 7.5,
6.75, 7.25, 6.5, 7.0, 7.5, 7.5, 7.5,
7.75, 7.5, 7.5, 7.5, 7.5, 6.5, 5.75,
6.25, 6.75, 7.5, 7.25, 7.25, 7.5, 7.75,
7.75, 7.75, 7.5, NA, NA, NA, NA))
,
id = participant
collection_point =从参与者处收集数据的次数(重复测量)
干预=组每位参与者随机分为(固定效应)
scale_A =每个参与者在每个数据收集点(结果)完成的问卷得分
参与者被随机分配到三种干预措施中的一种,并在三个不同的时间点完成相同的量表(量表A),以确定随时间推移的任何改善。
为了将collection_point
作为重复测量,我最初这样做:
mixed.lmer.A<-lmer(scale_A~intervention+collection_point+intervention*collection_point+(1|collection_point), data = df)
根据我所读到的,通常一个变量既不是固定的也不是随机的,但我不确定如何将collection_point
指定为重复测量。同样,当我运行模型时R说有500个观测值。如果你把所有的观察结果从基线加到3M,这是有道理的,但是只有200个参与者(一些参与者退出了,因此观察结果比预期的要少)。所以我认为R不能解释重复问卷调查的是同一群参与者这一事实?
我也试过这个:
mixed.lmer.A2<-lmer(scale_A~intervention+collection_point+intervention*collection_point+(1+collection_point|id), data = df)
但是我得到一个错误消息,说明工作的数量。<=随机效应的个数。
最后,我尝试了这个,但我不确定这是否是去它的方式:
mixed.lmer.A3<-lmer(scale_A~intervention+collection_point+intervention*collection_point+(1|collection_point/id), data = df)
任何帮助都将非常感激!我还在学习R,在学习lmer时遇到了一些困难。谢谢!
您在collection_point
和id
分组中重复测量(并且它也不平衡,这将使绘图有些困难)(注意:分组不是独立的,请参阅本答案底部的注释)
看来你认为intervention
是利息的固定效应。由于您可能希望收集点的显示顺序与呈现给数据框的顺序一致,因此需要它具有levels
值和ordered
标志。
collection_point = factor( c(rep(c("Baseline", "Immediate", "3M"), each=28)),
levels=c("Baseline", "Immediate", "3M"), ordered=TRUE)
要建立模型,请考虑这一点,要获得权威咨询,请参考BBolker的页面:https://bbolker.github.io/mixedmodels-misc/glmmFAQ.html#model-definition
> mixed.lmer.A1<-lmer(scale_A~intervention+(1|id) +(1|collection_point), data = df)
> summary(mixed.lmer.A1)
Linear mixed model fit by REML ['lmerMod']
Formula: scale_A ~ intervention + (1 | id) + (1 | collection_point)
Data: df
REML criterion at convergence: 70.4
Scaled residuals:
Min 1Q Median 3Q Max
-3.9506 -0.3416 0.1162 0.5891 1.4978
Random effects:
Groups Name Variance Std.Dev.
id (Intercept) 0.042109 0.20521
collection_point (Intercept) 0.008454 0.09195
Residual 0.099734 0.31581
Number of obs: 77, groups: id, 28; collection_point, 3
Fixed effects:
Estimate Std. Error t value
(Intercept) 7.38963 0.10002 73.880
interventionB -0.81671 0.12886 -6.338
interventionC -0.04588 0.12886 -0.356
Correlation of Fixed Effects:
(Intr) intrvB
interventnB -0.558
interventnC -0.558 0.433
另一种选择可能是在三个收集点的有序时间内建立一个具有干预效应和线性趋势估计的模型:
mixed.lmer.inter.trend <- lmer(scale_A~intervention+as.numeric(collection_point)+
(1|id),
data = df)
最后一个建议是在尝试将收集点建模为固定效果但得到线性和二次估计(由有序因子的默认处理引起)之后提出的。
也可能只需要+(1|id)
,因为没有一个id组的成员参与多个系列的集合:
with(df, table( collection_point, id))
id
collection_point 13 14 15 16 17 18 19 20 21 22 23 24 29 30 31 32 33 34 35 36 37 38 39 40 62 63 64 65
Baseline 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Immediate 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3M 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1