从 lmer 获得自由度

机器算法验证 lme4-nlme 混合模式
2022-03-16 02:32:16

我已经为 lmer 模型拟合了以下内容(尽管是虚构的输出):

Random effects:
 Groups        Name        Std.Dev.
 day:sample (Intercept)    0.09
 sample        (Intercept) 0.42
 Residual                  0.023 

我真的很想使用以下公式为每个效果建立一个置信区间:

(n1)s2χα/2,n12,(n1)s2χ1α/2,n12

有没有办法方便地摆脱自由度?

2个回答

相反,我只会创建轮廓似然置信区间。它们是可靠的,并且使用“lme4”包很容易计算。例子:

> library(lme4)
> fm = lmer(Reaction ~ Days + (Days | Subject),
            data=sleepstudy)
> summary(fm)
[…]
Random effects:
 Groups   Name        Variance Std.Dev. Corr
 Subject  (Intercept) 612.09   24.740       
          Days         35.07    5.922   0.07
 Residual             654.94   25.592       

您现在可以使用以下confint()函数计算轮廓似然置信区间:

> confint(fm, oldNames=FALSE)
Computing profile confidence intervals ...
                               2.5 %  97.5 %
sd_(Intercept)|Subject        14.381  37.716
cor_Days.(Intercept)|Subject  -0.482   0.685
sd_Days|Subject                3.801   8.753
sigma                         22.898  28.858
(Intercept)                  237.681 265.130
Days                           7.359  13.576

您还可以使用参数引导程序来计算置信区间。这是 R 语法(使用parm参数来限制我们想要置信区间的参数):

> confint(fm, method="boot", nsim=1000, parm=1:3)
Computing bootstrap confidence intervals ...
                              2.5 % 97.5 %
sd_(Intercept)|Subject       11.886 35.390
cor_Days.(Intercept)|Subject -0.504  0.929
sd_Days|Subject               3.347  8.283

每次运行的结果自然会有所不同。您可以增加nsim以减少这种变化,但这也会增加估计置信区间所需的时间。

混合模型的自由度是“有问题的”。要了解更多信息,您可以查看lmer、p 值以及 Douglas Bates 的所有帖子。r-sig-mixed-models FAQ总结了它令人烦恼的原因:

  • 一般来说,对于任何分母自由度的选择,计算的平方和比率的零分布是否真的是 F 分布并不清楚。虽然这对于与经典实验设计(嵌套、裂区、随机块等)相对应的特殊情况是正确的,但对于更复杂的设计(不平衡、GLMM、时间或空间相关性等)显然不是这样。
  • 对于已建议的每个简单自由度配方(帽子矩阵的轨迹等),似乎至少有一个相当简单的反例,其中配方严重失败。
  • 已经提出的其他 df 近似方案(Satterthwaite、Kenward-Roger 等)显然很难在 lme4/nlme 中实现,
    (...)
  • 因为 lme4 的主要作者不相信参考近似空分布的一般测试方法的实用性,并且因为其他任何人挖掘代码以启用相关功能(作为补丁或添加)的开销-on),这种情况在未来不太可能改变。

常见问题解答还提供了一些替代方案

  • 对 GLMM 使用 MASS::glmmPQL(使用旧的 nlme 规则,大致相当于 SAS 'inner-outer' 规则)用于 GLMM,或 (n)lme 用于 LMM
  • 从标准规则(用于标准设计)中猜测分母 df 并将它们应用于 t 或 F 测试
  • 在 lme 中运行模型(如果可能)并使用那里报告的分母 df (遵循简单的“内-外”规则,该规则应对应于简单/正交设计的规范答案),应用于 t 或 F 测试。有关 lme 使用的规则的明确规范,请参阅 Pinheiro 和 Bates 的第 91 页——此页面可在 Google 图书上找到
  • 使用 SAS、Genstat (AS-REML)、Stata?
  • 如果组数很大(> 45),则假设无限分母 df(即 Z/卡方检验而不是 t/F)?已经提出了关于“近似无限”有多大的各种经验法则,包括 [在 Angrist 和 Pischke 的''Mostly Harmless Econometrics''],42(向道格拉斯·亚当斯致敬)

但是,如果您对置信区间感兴趣,则有更好的方法,例如基于Karl Ove Hufthammer在他的回答中建议的引导程序,或常见问题解答中提出的方法。