检验混合模型中随机效应的显着性

Testing for the significance of a random effect in a mixed model

对于“交叉验证”,这可能 post 更好,所以我也会 post 它,所以如果这超出了这个讨论区的范围,我深表歉意。

我正在使用 lme4 包,想测试随机效应的显着性。我正在使用 RLRsim 包来生成 p 值的估计值,这与 lme4 文档中的建议一致。在 RLRsim 内,我将使用 exactRLRT 来检验随机斜率的显着性。

首先,我估计了完整模型:

data(sleepstudy, package = "lme4")
x <- lme4::lmer(Reaction ~ I(Days-4.5) + (I(Days-4.5)|Subject), 
  data = sleepstudy)

接下来,我想测试随机效应对I(Days-4.5)

的显着性
m0 <- update(x, . ~ . -(I(Days-4.5)|Subject) + (1|Subject))
m.slope  <- update(x, . ~ . - (I(Days-4.5)|Subject) + (0 + I(Days-4.5)|Subject))
#test for subject specific slopes:
exactRLRT(m.slope, x, m0)

但是,这会导致错误消息 Random effects not independent - covariance(s) set to 0 under H0. exactRLRT can only test a single variance.

显然,当随机效应不独立时,我不能使用这种方法。我可以重新指定型号:

mA <- lme4::lmer(Reaction ~ I(Days-4.5) + (1|Subject) + (0 + I(Days-4.5)|Subject), 
  data = sleepstudy)
m0 <- update(mA, . ~ . - (0 + I(Days-4.5)|Subject))
m.slope  <- update(mA, . ~ . - (1|Subject))
#test for subject specific slopes:
exactRLRT(m.slope, mA, m0)

这可以给我一个估计。然而,我的理解是 运行 作为独立的随机效应是一个与我最初估计的模型根本不同的模型,所以我确信输出的这个 p 值是无效的。

如果随机效应不被假定为独立的,我不确定我能做些什么(如果有的话)来测试随机效应的重要性。我在这里使用 sleepstudy 数据作为示例,但是当我将随机效应估计为独立时,我的实际数据集遇到了收敛问题。

任何对此的见解将不胜感激!

更新

Here 是我 post 在“交叉验证”上编辑的问题的 link。

它要慢得多,但参数引导应该适用于此。 (虽然在这种情况下它仍然很快。)

library(pbkrtest)
system.time(pp <- PBmodcomp(largeModel = x, smallModel = m0))
##    user  system elapsed 
##  53.718   0.283  10.967 

奇怪的是,它似乎在我的机器上使用了多个内核,我不认为它应该在不询问的情况下这样做...

> pp
Bootstrap test; time: 8.50 sec; samples: 1000; extremes: 0;
large : Reaction ~ I(Days - 4.5) + (I(Days - 4.5) | Subject)
Reaction ~ I(Days - 4.5) + (1 | Subject)
         stat df   p.value    
LRT    42.114  2 7.164e-10 ***
PBtest 42.114     0.000999 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1