kr-vcovAdj.Rd
Kenward and Roger (1997) describe an improved small sample approximation to the covariance matrix estimate of the fixed parameters in a linear mixed model.
vcovAdj(object, details = 0)
# S3 method for lmerMod
vcovAdj(object, details = 0)
An lmer
model
If larger than 0 some timing details are printed.
the estimated covariance matrix, this has attributed P, a
list of matrices used in KR_adjust
and the estimated matrix W of
the variances of the covariance parameters of the random effects
list: Sigma: the covariance matrix of Y; G: the G matrices that
sum up to Sigma; n.ggamma
: the number (called M in the article) of G
matrices)
If $N$ is the number of observations, then the vcovAdj()
function involves inversion of an $N x N$ matrix, so the computations can
be relatively slow.
Ulrich Halekoh, Søren Højsgaard (2014)., A Kenward-Roger Approximation and Parametric Bootstrap Methods for Tests in Linear Mixed Models - The R Package pbkrtest., Journal of Statistical Software, 58(10), 1-30., https://www.jstatsoft.org/v59/i09/
Kenward, M. G. and Roger, J. H. (1997), Small Sample Inference for Fixed Effects from Restricted Maximum Likelihood, Biometrics 53: 983-997.
fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
class(fm1)
#> [1] "lmerMod"
#> attr(,"package")
#> [1] "lme4"
## Here the adjusted and unadjusted covariance matrices are identical,
## but that is not generally the case:
v1 <- vcov(fm1)
v2 <- vcovAdj(fm1, details=0)
v2 / v1
#> 2 x 2 Matrix of class "dgeMatrix"
#> (Intercept) Days
#> (Intercept) 1 1
#> Days 1 1
## For comparison, an alternative estimate of the variance-covariance
## matrix is based on parametric bootstrap (and this is easily
## parallelized):
if (FALSE) {
nsim <- 100
sim <- simulate(fm.ml, nsim)
B <- lapply(sim, function(newy) try(fixef(refit(fm.ml, newresp=newy))))
B <- do.call(rbind, B)
v3 <- cov.wt(B)$cov
v2/v1
v3/v1
}