[英]accessing random effects variance estimate in nlme's lme
有没有办法在nlme包lme模型中获得随机项的方差?
Random effects:
Formula: ~t | UID
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 520.310397 (Intr)
t 3.468834 0.273
Residual 31.071987
换句话说,在上面,我想得到3.468834。
这并不困难; VarCorr
访问器方法旨在精确地恢复此信息。 由于VarCorr
方法将方差 - 协方差作为字符矩阵而不是数字返回(我使用storage.mode
转换为数字而不丢失结构,并suppressWarnings
警告忽略有关NAs的警告),因此它应该比它应该更难一点storage.mode
library(nlme)
fit <- lme(distance ~ Sex, data = Orthodont, random = ~ age|Subject)
vc <- VarCorr(fit)
suppressWarnings(storage.mode(vc) <- "numeric")
vc[1:2,"StdDev"]
## (Intercept) age
## 7.3913363 0.6942889
在您的情况下,您将使用vc["t","StdDev"]
。
这是通过一种打印方法(我怀疑print.summary.pdMat
)计算出来的。 最简单的方法是捕获输出。
library(nlme)
fit <- lme(distance ~ Sex, data = Orthodont, random = ~ age|Subject)
summary(fit)
# Linear mixed-effects model fit by REML
# Data: Orthodont
# AIC BIC logLik
# 483.1635 499.1442 -235.5818
#
# Random effects:
# Formula: ~age | Subject
# Structure: General positive-definite, Log-Cholesky parametrization
# StdDev Corr
# (Intercept) 7.3913363 (Intr)
# age 0.6942889 -0.97
# Residual 1.3100396
# <snip/>
ttt <- capture.output(print(summary(fit$modelStruct), sigma = fit$sigma))
as.numeric(unlist(strsplit(ttt[[6]],"\\s+"))[[2]])
#[1] 0.6942889
这是计算它的方法:
fit$sigma * attr(corMatrix(fit$modelStruct[[1]])[[1]],"stdDev")
#(Intercept) age
# 7.3913363 0.6942889
> fit <- lme(distance ~ Sex, data = Orthodont, random = ~ age|Subject)
> getVarCov(fit)
Random effects variance covariance matrix
(Intercept) age
(Intercept) 54.6320 -4.97540
age -4.9754 0.48204
Standard Deviations: 7.3913 0.69429
> # In contrast to VarCorr(), this returns a numeric matrix:
> str(getVarCov(fit))
random.effects [1:2, 1:2] 54.632 -4.975 -4.975 0.482
- attr(*, "dimnames")=List of 2
..$ : chr [1:2] "(Intercept)" "age"
..$ : chr [1:2] "(Intercept)" "age"
- attr(*, "class")= chr [1:2] "random.effects" "VarCov"
- attr(*, "group.levels")= chr "Subject"
> unclass(getVarCov(fit))
(Intercept) age
(Intercept) 54.631852 -4.975417
age -4.975417 0.482037
attr(,"group.levels")
[1] "Subject"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.