【问题标题】:Interval around variance components方差分量的区间
【发布时间】:2014-12-23 02:20:54
【问题描述】:

我对 lme4::lmer 模型中随机效应的方差分量估计值的(置信度)区间或标准误差或类似的东西(基于抽样?)感兴趣。

我确信我把事情过分简单化了(而且我知道标准错误在这里被认为不是正确的事情),但我非常感谢一些代码行,它们可以在一定程度上衡量这些估计的可信度。

在 VarCorr 帮助页面的示例中,我希望对此输出的 Variance 列中的三个值有信心:

data(Orthodont, package="nlme")
fm1 <- lmer(distance ~ age + (age|Subject), data = Orthodont)
vc <- VarCorr(fm1)
print(vc,comp=c("Variance"))

【问题讨论】:

  • confint(fm1) 呢???
  • 实际上,confint(fm1,which="theta_")^2 将适用于方差上的 CI,但对协方差上的 CI 没有意义。
  • @BenBolker 非常感谢。显然这很容易。你还能帮我解释一下吗? print(vc,comp=c("Variance")) 给出了三个方差值:“主题(截距)”、“主题年龄”和“残差”。 confint(fm1,which="theta_")^2 给出了四个区间“.sig01”、“.sig02”、“.sig03”和“.sigma”。它们有什么关系?特别是残差是否有CI?

标签: r lme4


【解决方案1】:

初步:(我将冒昧地使用另一个示例,因为Orthodont 似乎有些奇怪,我将不得不对其进行调查......)

library("lme4")
fm1 <- lmer(Reaction ~ Days + (Days|Subject), data = sleepstudy)
vc <- VarCorr(fm1)
print(vc,comp=c("Variance"))

计算置信区间。使用oldNames=FALSE 为我们提供了更有意义的名称:

cc <- confint(fm1,which="theta_",oldNames=FALSE)

print(cc,digits=3)
##                               2.5 % 97.5 %
## sd_(Intercept)|Subject       14.382 37.716
## cor_Days.(Intercept)|Subject -0.482  0.685
## sd_Days|Subject               3.801  8.753
## sigma                        22.898 28.858

平方cc 为我们提供了方差的置信区间——不幸的是,平方相关系数的置信区间相当无用(我们可能更喜欢协方差的置信区间,这需要更多的工作)。删除第二个(相关)行,并在行名称的开头删除即将引起误解的 sd_/cor_ 标记:

ccsq <- cc[-2,]^2
rownames(ccsq) <- gsub("^.*_","",rownames(ccsq))
ccsq

##                         2.5 %     97.5 %
## (Intercept)|Subject 206.82812 1422.49637
## Days|Subject         14.44885   76.62172
## sigma               524.33063  832.78396

(注意最后一行是残差方差的 95% CI,而不是残差标准差,即使我没有改名……)

【讨论】:

  • 非常感谢。 +1以获得详细答案。只要我自己的数据集中没有什么“奇怪”的东西,我就很高兴。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多