在R中(使用lme4),将时间序列纳入混合效应模型

8

我已经搜索了类似的问题,但没有找到相关的问题,如果我错过了相关的问题,请谅解。

我正在研究在不同条件下饲料器使用时间(因变量),每个受试者访问30次饲料器。

受试者会接触一种类型的饲料器,该饲料器具有不同的组合,包括有香味/无香味、有视觉图案/无视觉图案,以及这些视觉或香味图案在两种空间安排中呈现。

到目前为止,我的模型是:

mod<-lmer(timeonfeeder ~ scent_yes_no + visual_yes_no + 
    pattern_one_or_two + (1|subject), data=data)

我该如何将访问次数纳入模型中,以查看这些因素是否会随时间影响饲料器上的停留时间?


1
你有数据示例吗? - Mathieu B
如果您假设时间上存在恒定的变化(访问次数),则可以将其作为额外的一级预测变量添加。如果您认为在受试者之间有不同的变化,还可以为时间变量指定随机系数。但是让我问一下:如果您对时机问题(花费的时间)感兴趣,那么您不应该进行持续时间分析(也称事件历程分析)吗? - Dominix
@MathieuB 这是数据如何组合的示例 post image 数据集非常庞大,因此即使只展示一个主题的数据也很困难。 - wonderburg
1个回答

14

您有多种选择(这个问题可能会更适合CrossValidated)。

  • 正如@Dominix所建议的,您可以允许饲料器上的时间呈线性增加或减少趋势。也许允许此变化在不同鸟类之间有所不同是有意义的:

timeonfeeder ~ time + ... + (time|subject)
  • 你可以允许随着时间的变化出现任意模式(不仅限于线性):

  • timeonfeeder ~ factor(time) + ... + (1|subject)
    

    也许这对你来说没有意义,因为你有很多观测值,所以需要很多参数(如果每个人有三个时间点会更合理)。

  • 你可以通过 加性模型 来允许更复杂的随时间变化的模式,即使用三次样条函数建模时间变化。例如:

  • library(mgcv)
    gamm(timeonfeeder ~ s(time) + ... , random = ~1|subject
    

    (1) 这假设时间模式在受试者之间相同;(2) 因为gamm()在底层使用lme而不是lmer,所以您必须将随机效应指定为一个单独的参数。(您也可以使用gamm4软件包,它在底层使用lmer。)

    (3) 您可能希望考虑时间自相关性。例如,

    lme(timeonfeeder ~ time + ... ,
        random = ~ time|subject,
        correlation = corAR1(form= ~time|subject) , ...)
    

    1
    几乎可以,但(1|subject)是多余的;(visit_no|subject)等同于(1+visit_no|subject),即包括受试者之间斜率和截距的变化。 - Ben Bolker
    感谢大家抽出时间回答。我认为像Dominix和Ben建议的那样,我的最佳选择是允许饲料器上的时间随时间线性增加或减少。只是为了澄清,如果是这种情况,我是否需要更改我的模型为... mod<-lmer(timeonfeeder ~ visit_no + scent_yes_no + visual_yes_no + pattern_one_or_two + (1|subject) + (visit_no|subject), data=data)。如果我做错了,请原谅,因为我对R和混合模型都比较新(并且在Stack Overflow上发表评论)。困惑重重! - wonderburg
    非常棒,非常感谢。对于糟糕的格式我很抱歉。 - wonderburg
    如果这个问题解决了你的问题,我们鼓励你点击勾选来接受它。 - Ben Bolker

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接