使用 R 中的 lme4 包估计随机斜率和随机截距之间的相关性

机器算法验证 r 混合模式 lme4-nlme 重复测量 随机效应模型
2022-03-17 21:10:23

为了回答我的研究问题,我对使用 R 库 lme4 估计的多级模型中随机斜率和随机截距之间的相关性感兴趣。

我拥有的数据是:Y(学生的考试成绩)、SES(每个学生的社会经济状况)和 schoolid(每个学校的 ID)。

我正在使用以下语法来估计学校的随机截距和斜率:

library(lme4)
model3 <- lmer(Y ~ SES + (1 + SES | schoolid))

我用于此语法的参考是此 pdf:

http://www.bristol.ac.uk/cmm/learning/module-samples/5-concepts-sample.pdf

在第 19 页,描述了类似的分析。据说通过同时定义随机截距和斜率,间接指定我们希望随机截距和斜率共同变化。因此,还估计了随机斜率和随机截距之间的相关性。基本上,这正是我回答我的研究假设所需要的。

但是,当我查看结果时:

 summary(model3)

我得到以下输出:

Linear mixed model fit by REML ['lmerMod']
Formula: Y ~ SES + (1 + SES | schoolid)

REML criterion at convergence: 8256.4

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.1054 -0.6633 -0.0028  0.6810  3.5606 

Random effects:
 Groups   Name        Variance  Std.Dev. Corr
 schoolid (Intercept) 0.6427924 0.80174      
      SES             0.0009143 0.03024  1.00
 Residual             0.3290902 0.57366      
Number of obs: 4376, groups: schoolid, 179

Fixed effects:
             Estimate Std. Error t value
(Intercept) -0.036532   0.060582  -0.603
SES          0.062491   0.009984   6.259

Correlation of Fixed Effects:
    (Intr)
SES 0.226 

如输出中所述,随机斜率和随机截距之间的相关性等于 1.00。我觉得这很难相信。当我调用 R 时:

VarCorr(model3)$schoolid

我得到以下输出,它给出了相关性和协方差矩阵:

                (Intercept)          SES
(Intercept)  0.64279243 0.0242429680
SES          0.02424297 0.0009143255

attr(,"stddev")
(Intercept)         SES 
 0.80174337  0.03023782 

attr(,"correlation")
        (Intercept) SES
(Intercept)           1   1
SES                   1   1

似乎斜率和截距之间的相关性被 R 设置为 1.00。当我在互联网上搜索有关多级建模的参考资料时,我没有在其他任何人的输出中看到这一点。

有谁知道这种相关性的原因是什么?是否可以将相关性设置为 1.00,否则无法识别模型?还是因为随机斜率的方差太小(0.0009)以至于无法估计相关性?

我试图模拟数据,以便为小型可重现数据集提供代码。然而,我还不能通过模拟数据重现这个输出。就我有代码而言,我将发布我的帖子并添加代码。

编辑:针对 Roman Luštrik 的评论,以下情节:

ggplot(data[1:261,], aes(x = SES, y = Y)) + geom_point() + facet_wrap(~ schoolid) +
   geom_smooth(method=lm)

由于总共有 179 所学校,情节变得相当混乱,因此我将前 10 所学校包括在内只是为了使其易于阅读:

在此处输入图像描述

1个回答

这是评论中提到的@ben-bolker 的答案,它链接到 R-sig-ME 邮件列表,为了完整起见,在此处发布:

是的,您的数据中没有足够的信息(或者等效地有太多的噪声)来唯一标识完整的方差-协方差矩阵,因此结果是“奇异的”;也就是说,基础组件之一被标识为零。这种情况的常见症状包括方差等于零(或几乎等于,尽管我在您的情况下看到方差很小并不完全为零)或相关性等于 +/- 1。

http://rpubs.com/bbolker/4187显示了一些模拟示例,其中估计方差崩溃为零(尽管真实的模拟模型具有非零组间方差)。据推测,人们可以制作类似的示例(使用随机区组设计/随机斜率模型),这些示例将显示相关性崩溃到 +/- 1 的类似情况。

您遇到这个问题有点令人惊讶,因为它最常见的问题是分组变量中的水平数量很少,而这里的情况似乎并非如此。

请参阅此处了解更多信息...