从lmer获得自由度


11

我已经将lmer模型与以下内容配合在一起(尽管已完成输出):

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

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

ñ-1个s2χα/2ñ-1个2ñ-1个s2χ1个-α/2ñ-1个2

有没有一种方法可以方便地摆脱自由度?


1
我认为您想检查lmerTest。在混合效果模型中,对于固定效果(例如Satterthwaite,Kenward-Roger等),有很多近似值可以近似df 。对于您而言,在我看来,您的生活过于复杂。您确实假定每个效果都是高斯效应。只需使用标准偏差即可获得您选择的置信区间。
usεr11852

3
@usεr11852在混合效果模型中,您假定每个效果都是高斯分布,但参数是高斯分布的方差,而不是均值。因此,它估计的分布将是非常扭曲,和正常±〜2倍标准差的置信区间将不会是合适的。
Karl Ove Hufthammer

1
@KarlOveHufthammer:你指出这一点是正确的;我明白您(可能是OP)的意思。我以为他提到自由度时,他担心随机效应的方式和/或实现。
usεr11852

Answers:


17

我将只创建轮廓似然置信区间。它们很可靠,并且使用“ 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以减小这种变化,但是这也将增加估计置信区间所需的时间。


1
好答案(+1)。我还要提到一个事实,在这种情况下,人们也可以从参数引导中获取配置项。此主题包含有关此问题的非常有趣的讨论。
usεr11852

@usεr11852感谢您的建议。我现在添加了一个使用参数引导程序的示例。
Karl Ove Hufthammer

6

混合模型的自由度是“有问题的”。要了解更多信息,可以查看lmer,p值以及道格拉斯·贝茨(Douglas Bates)发表的所有内容。同样,r-sig-mixed-models FAQ总结了它令人烦恼的原因:

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

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

  • 对GLMM使用MASS :: glmmPQL(使用大约等于SAS'inner-outer'规则的旧nlme规则),对LMM使用(n)lme
  • 从标准规则猜测分母df(对于标准设计)并将其应用于t或F检验
  • 在lme中运行模型(如果可能),并使用在那里报告的分母df(遵循简单的“内外”规则,该规则应对应于简单/正交设计的规范答案),并应用于t或F检验。有关lme使用的规则的明确说明,请参见Pinheiro和Bates的第91页-此页可在Google图书中找到
  • 使用SAS,Genstat(AS-REML),Stata?
  • 如果组数很大(> 45,则假定无穷分母df(即Z / chi平方检验,而不是t / F))关于“近似无限”有多大的经验法则,包括[Angrist and Pischke's “最无害的计量经济学”,第42页(向道格拉斯·亚当斯致敬)

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


“从标准规则(对于标准设计)中猜测分母df,并将其应用于t或F检验”;我真的很想有人能详细说明一下。例如,对于嵌套设计(例如,患者与对照,每个受试者几个样本;受试者ID为随机效应),我们如何获得这种设计的自由度?
Arnaud A
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.