直观地说,理解可以从分组变量或分组术语开始。这些是出现在公式右侧|
或||
随机部分中的术语。它们通常是重复测量的因子变量,或一个因子与另一个随机因子(或实际上是一个固定因子)的组合(相互作用)。这些应该是单个术语 - 变量或组合/交互,而不是多个术语(即,您可以拥有(1|A)
或(1|A:B)
不拥有(1|A+B)
(那将是无效的)。在所有情况下,它们都可以解释为:存在一些随机变化在变量或变量组合的“级别”数据中。我们通常希望为这些拟合随机截距,这将解释由于这种变化而导致的任何非独立性。
我们可以通过考虑唯一分组项的数量来考虑模型中“级别”的数量。使用单个 groupig 术语,我们有一个 2 级模型,有 3 个术语,一个 3 级模型。这里需要注意,因为这些“级别”可能与多级模型中的级别不对应。在使用因子设计的实验分析中,“级别”并不真正适用,因此您可以有类似的东西, y ~ A + B + (1|id) + (1|id:A) + (1|id:B)
并且有 3 个“级别”的变化,但不是多级建模意义上的。有关此问题的更多详细信息,请参阅此答案。即使在多级建模中,由于嵌套和交叉因素,这也可能很棘手。有关这方面的更多详细信息,请参见此处。嵌套是研究设计的属性,而不是模型的属性。
|
或左侧的术语||
指定允许哪些变量在分组术语的不同级别上变化。在最简单的情况下,它只是“1”,这意味着我们只希望截距发生变化(因此,只是随机截距)。如果我们有其他变量代替“1”,那么这意味着我们希望这些变量(通常是固定效应)在分组项的每个级别上除了截距(即(time|group)
与 相同(1 + time|group
)之外发生变化。这些是随机斜率。
|
如果“0”出现在or的左侧,||
则表示不适合 groupng 项的随机截距(通常是因为它们由模型中的不同项拟合)。
最后,默认情况下lmer
将尝试估计随机效应之间的相关性。但是,如果||
指定,则不会估计相关性(它们是否固定为零)。这实际上只是简写。例如(time||group)
,(1|group) + (0+time|group)
这意味着我们为 拟合随机截距group
,我们为时间拟合随机斜率,但对时间没有随机截距,因此合在一起意味着组的随机截距和时间的斜率,但它们之间没有相关性。这也意味着随机斜率和随机截距仅在它们位于单个|
.
因此,对于您的具体示例:
lmer(y ~ time * group +
(time | therapist:subjects) +
(time * group || therapist),
data = data)
首先请注意,我们有 2 个不同的分组术语:therapist:subjects
组合和therapist
这对于所有 3 个模型都是如此。对于前者,我们还为time
(与随机截距相关)拟合随机斜率。对于后者,我们拟合随机斜率,time * group
但这些与 的随机截距无关therapist
。
lmer(y ~ time * group +
(time | therapist:subjects) +
(time | therapist) +
(0 + group + time:group | therapist),
data = data)
与第一个模型一样,我们有 2 个不同的分组项:therapist:subjects
组合项和therapist
前者time
的随机斜率。对于后者,这次我们有time
(与 的随机截距相关的随机斜率,以及therapist
和 的不相关随机斜率。group
time:group
lmer(y ~ time * group +
(1 | therapist:subjects) +
(0 + time | therapist:subjects) +
(0 + time:group | therapist) +
(0 + group | therapist),
data = data)
同样,我们有 2 个不同的分组术语:therapist:subjects
组合 和therapist
。对于前者,我们有 的随机截距therapist:subjects
和time
(与随机迭代不相关的)的随机斜率。如上所述,这些也可以简写为(time || therapist:subjects)
. 对于后者,根本没有随机截距(因为 0 出现在左侧的两个公式中),但我们拟合随机斜率time:group
和group
最后几点强调无效的内容:
lmer(y ~ time * group + (0 | therapist)
无效,因为 . 的左侧不能有一个零|
。这意味着therapist
是一个分组变量(暗示我们想要随机截距),但是“0”意味着不适合随机截距。这是一个冲突,应该会产生一个错误。
lmer(y ~ time * group + (1 | therapist*subject)
是一个错误,因为therapist*subject
它不是一个单独的术语 - 它是简写,therapist + subject + therapist:subject
所以它相当于
lmer(y ~ time * group + (1 | therapist + subject + therapist:subject)
这是无效的。如果您实际上希望这些术语中的每一个都是分组术语,那么您将使用:
lmer(y ~ time * group + (1 | therapist) + (1 subject) + (1| therapist:subject)