用于重复测量的 lmer

机器算法验证 r 混合模式 lme4-nlme 重复测量
2022-04-05 01:00:22

我有几对动物pair对于每一个,我反复测量他们每天接触的时间比例time.con(每组测量 30-60 次,每组测量 1 次date)。lmer我想比较不同对在使用和控制重复测量方面花费了多少时间。配对是永久的,所以本质上配对 = 个人。这是一个简化的示例:

      pair   date     time.con

 [1,] "1"  "01.06.17" "0.12"  
 [2,] "1"  "02.06.17" "0"     
 [3,] "1"  "03.06.17" "0.11"  
 [4,] "2"  "04.06.17" "0.34"  
 [5,] "2"  "05.06.17" "0.02"  
 [6,] "2"  "06.06.17" "0.07"  
 [7,] "3"  "01.06.17" "0.14"  
 [8,] "3"  "02.06.17" "0.26"  
 [9,] "3"  "03.06.17" "0.1"

所以,固定效应是pair问题是,如何控制重复测量?如果我pair同时使用固定效应和随机效应,模型显然无法收敛:

`lmer(time.con ~ pair + (1|pair))`

我想这就是我打算以date某种方式使用的地方(如嵌套在pair?),但我无法正确使用语法:

`lmer(time.con ~ pair + (1+pair|date))` (doesn't work)

我可能缺少一些简单的东西,因为我对 R 和 lmm 都是新手。将不胜感激任何建议!

2个回答

这似乎是一项纵向研究,每对都会随着时间的推移进行测量。作为第一步,date您可以根据变量构建后续时间变量,即从第一次测量开始的时间。但是请仔细考虑,如果第一次测量真的是您的实验中每对的时间 0 或者可能是另一个日期。

然后,您包括pair分组变量的随机效应,但不将其也作为固定效应包括在内。您可以从随机截距模型开始,例如,

fm1 <- lmer(time.con ~ follow_up_time + (1 | pair), 
            data = your_data)

该模型假设一对内随时间的相关性保持不变。您可以通过假设相关性随着使用随机截距和随机斜率模型的测量之间的时间跨度而减小来扩展模型,例如,

fm2 <- lmer(time.con ~ follow_up_time + (follow_up_time | pair), 
            data = your_data)

要评估是否需要随机斜率,您可以进行似然比检验,即

anova(fm1, fm2)

(我第一次尝试在 stackexchange 上回答......手指交叉,这行得通)

我不是专家,但我会提供一些反馈。我没有足够的声誉将其放在评论中,所以这是一个答案。

我想第一个问题是,你想从数据中学到什么?你说你想比较他们。这样,您是否只想查看每对的方法?如果是这样,您可以查看未调整的均值或缩小的均值:

  1. 未调整的意思是使用 lm()。也就是说,没有池你可以使用:

lm(time.con ~ Pair)

要获得系数:

coef( lm(time.con ~ Pair) )

  1. 缩小意味着使用 lmer()。也就是说,通过池化,您可以使用:

lmer(time.con ~ (1|Pair))

要获得系数:

coef( lmer(time.con ~ (1|Pair)) )

如果这不是您说要比较它们时的想法,那么在这种情况下,“比较”对您意味着什么?

最后,由于您的响应变量在 0 处有一个硬下限,并且一些接近它的值包括一个在 0 处的右值,因此错误项为高斯的典型假设可能不是最好的。如果您想通过使用广义学习模型来解决这个问题,glm() 和 glmer() 可能会有所帮助。希望其他人可以添加更多关于使用广义线性模型是否值得的细节。

有关更多背景信息,我认为这是在网络上免费提供的一个很好的资源:

https://bookdown.org/roback/bookdown-bysh/ch-MLRreview.html

我使用了一个旧版本,但看起来他们几天前更新了它。