方程符号表示法将固定效应斜率包括在随机效应截距的分布中。

3
{equatiomatic}的小插图包括以下示例(此处):
library(lme4)
library(equatiomatic)

lev1_long <- lmer(score ~ wave + (1|sid) + (1|school) + (1|district),
                  data = sim_longitudinal)
extract_eq(lev1_long)

这导致了如下的符号表示:

enter image description here

不同的随机截距在各自的行中被标记出来(我认为暗示它们相加以生成组合截距?),并且固定斜率wave,表示为 $\beta_1$,被包含在第一行中,在结果变量 score 的分布中。我可以成功地复制这个例子。

然而,当我使用一些数据进行操作时,我得到了不同的符号。这里有一个用虚拟数据集可重复的示例:

library(tidyverse)
library(lme4)
library(equatiomatic)

mock_df <- tibble(
  outcome = 1:10,
  oID = c('D', 'A', 'B', 'C', 'B', 'B', 'E', 'B', 'A', 'C'),
  treatment =  rep(c(0, 1), each = 5),
  pID = c('P1', 'P1', 'P2', 'P2', 'P2', 'P3', 'P3', 'P3', 'P4', 'P4'))

model <- lmer(outcome ~ 1 + treatment + (1|pID) + (1|oID), data = mock_df)
extract_eq(model)

当然,这个模型对于虚构的数据完全不适用,但是暂且不考虑这一点。{equatiomatic} 的输出如下:

enter image description here

与小品例子中一样,我们有多个随机截距和一个固定斜率。但是方程看起来非常不同。斜率已经移动到第三行,进入了 pID 的随机截距分布中。
我真的不明白符号差异的原因,或者说,为什么斜率要进入 pID 截距的分布而不是 oID 截距的分布。在示例中和我制作的虚构模拟示例之间是否存在实际的基本模型结构差异,这是否可以证明符号差异的合理性?

嗨Gil,我觉得你应该把这个问题放在https://stats.stackexchange.com/上。 - Stephan
谢谢Stephan!对于错放问题我很抱歉。一开始我认为这是一个R语言问题而不是统计学问题,但我想你是正确的。我会将问题移动并从这里删除。 - Gil Henriques
您可以将此处的内容翻译为中文,我会假设管理员会处理。我认为数学/统计知识对您有更大的帮助,而不是程序员。但绝大多数人都会使用两个平台。也许搜索一下统计标签? - Stephan
1个回答

2
这说明为什么lmer公式不足以指定混合效应模型。对于每个固定的预测变量,我们还必须说明它是描述个体还是组别。
注意,在您的模拟数据中,治疗方法在pIDs内不变,因为治疗方法分配给pIDs而不是个人;具有相同pID标签的所有个体都接受相同的治疗方法。
mock_df
#> # A tibble: 10 × 4
#>    outcome oID   treatment pID  
#>      <int> <chr>     <dbl> <chr>
#>  1       1 D             0 P1   
#>  2       2 A             0 P1   
#>  3       3 B             0 P2   
#>  4       4 C             0 P2   
#>  5       5 B             0 P2   
#>  6       6 B             1 P3   
#>  7       7 E             1 P3   
#>  8       8 B             1 P3   
#>  9       9 A             1 P4   
#> 10      10 C             1 P4

我们可以通过统计pID的治疗分配次数来总结这一观察结果。为了比较,我们还要统计oID的治疗分配次数。
treatment_by_group <- function(df, group) {
  df %>%
    count(treatment, {{ group }}) %>%
    pivot_wider(
      names_from = treatment,
      values_from = n,
      values_fill = 0L
    )
}

treatment_by_group(mock_df, pID)
#> # A tibble: 4 × 3
#>   pID     `0`   `1`
#>   <chr> <int> <int>
#> 1 P1        2     0
#> 2 P2        3     0
#> 3 P3        0     3
#> 4 P4        0     2
treatment_by_group(mock_df, oID)
#> # A tibble: 5 × 3
#>   oID     `0`   `1`
#>   <chr> <int> <int>
#> 1 A         1     1
#> 2 B         2     2
#> 3 C         1     1
#> 4 D         1     0
#> 5 E         0     1

由于治疗分配在pID内部不变,我们无法通过比较pID内的个体来了解治疗之间的差异;我们必须比较pID之间的差异。
个体嵌套在pID内使得模型具有层次结构。实际上,该模型有两个组成部分:每个pID的回归以及给定其pID后每个观测值的回归。这正是您在equatiomatic模型规范中看到的内容。
将pID分组与oID分组进行对比。我们可以通过比较oID内的个体(更准确地说,比较A、B和C oIDs中的个体)来估计治疗之间的差异。
PS:我在回答这个交叉验证问题时写了一个更长的解释,带有更多的公式:Writing mathematical equations (mixed effect models)

非常感谢您的清晰回答(以及提供了链接,其中包含了很好的公式解释)。当我更改模拟数据以便我们可以将相同的pID与不同的治疗方案相关联时,{equatiomatic}符号确实发生了变化。然而,令人困惑的是,这种变化包括将治疗效果从pID分布移动到oID分布中。根据您的回答,我不会期望出现这种情况,因为每个oID都可以有不同的治疗方案(例如,oID B可以有治疗方案0或1)。我以为我已经理解了,但还有一些东西我不明白。 - Gil Henriques
如果我在mock_df上删除pID,那不是我观察到的:*lmer(outcome ~ 1 + treatment + (1 | oID), data = mock_df)*。层次结构取决于随机效应如何嵌套和/或交叉。它可能有点复杂。这里有一个不错的解释:Crossed vs nested random effects: how do they differ and how are they specified correctly in lme4? - dipetkov
请注意,分层结构不会改变 *E{Y}*,只会改变固定效应估计的标准误差。这是因为从 k 组中估计固定效应比从 n > k 个个体中更难。 - dipetkov

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