r 中的 Lmer:正确定义了重复测量模型? (HLM)

问题描述 投票:0回答:1

这是我第一次与

lmer
一起工作,我不确定我是否做对了。 我的数据是具有变量 ID、季节、开始时间响度和训练的重复测量数据。响度(以 db 为单位)在多个位置 (ID) 测量了 4 次,每个季节和不同时间测量一次。火车给出了从每个位置到最近的火车站的距离。我的数据中有一些缺失值,我删除了,所以这不是一个平衡的设计。

举个例子:

df <- data.frame(Id  = c(1, 1, 1, 1, 2, 2, 2, 2), 
   Loudness = c(12.4, 12.5, 35.4, 23.3, 12.5, 34.5, 14.5, 16.3),
   Season = c("Spring", "Summer", "Fall", "Winter", "Spring", "Summer", "Fall", "Winter"),
   Start_Time = c("09:32:23", "09:37:38", "10:12:34", "11:38:48", 
    "12:38:35", "12:38:50", "14:49:56", "13:38:45"), 
   Train = c(rep(12.4, 4), rep(18.4, 4)))

我将 Season 从 0 重新编码为 3,将 Start_Time 从 0 重新编码为 2(早上、中午、下午),并将它们都转换为因子。

当我试图从分层线性模型的角度理解我的模型时,变量 Loudness、Season 和 Start_Time 将是我的 1 级变量,而 Train 和 ID 将是我的 2 级变量。

我现在正在尝试在 R 中计算以下模型,以便我可以对 Season 产生随机效果。 Start Time 和 Season 之间的相互作用也应该被计算,并且还有另一个 Train 的相互作用,因为它是一个 2 级变量。

Model <- lmer(Loudness ~ Season * Start_Time * Train + (Season|ID), data = df)

但是在计算这个时我得到以下警告:

Error: number of observations (=2748) <= number of random effects (=2920) for term (Season | ID); the random-effects parameters and the residual variance (or scale parameter) are probably unidentifiable 

我意识到当我将 Season 转换为数值变量时,我没有收到警告。 我的问题是:当我将 Season 转换为数值变量时,它有什么区别?当 Season 是一个因素时,为什么 R 不计算模型。考虑到我假设 Train 是我的 2 级变量,我是否也正确地定义了模型? 我期待着您的回答 :)。

r lme4 mixed-models
1个回答
0
投票

基本问题是每个季节/ID 组合只有一个观察值,因此您的随机效应与残差方差(每个观察值也有一个随机 iid 高斯值)混淆。如果您将 Season 转换为数值变量,您将拟合一个随机斜率模型,该模型每组只有两个参数(斜率和截距),而不是 4 个(截距和三个季节性对比参数)。

模型在其他方面看起来很合理。

多种选择:

  • 您可以使用
    control = lmerControl(check.nobs.vs.nRE = "ignore")
    (可能还包括
    check.nobs.vs.nlev = "ignore"
    )来忽略混杂;您的方差估计将是非唯一的,但其他一切可能都可以正常工作
  • 你可以抑制残差项;这对于
    lmer
    是不可能的,但是您可以使用
    glmmTMB
    (
    dispformula = ~0
    ) 或者您可以使用
    lme
    (
    lmeControl(sigma = [small non-zero number])
    ) 或
    blme
    (将
    resid.prior
    设置为一个小的非零值值)
  • 您可以在随机效应中省略
    Season
    项(即
    (1|ID)
    );您的模型现在将对应于 齐次复合对称 模型(每个季节的 RE 方差相同,每对季节性效应具有相同的相关性),这可能仍然是合理的
© www.soinside.com 2019 - 2024. All rights reserved.