Compute Confidence Intervals for Parameters of a [ng]lmer Fit
confint.merMod.Rd
Compute confidence intervals on the parameters of a *lmer()
model fit (of class"merMod"
).
Usage
# S3 method for class 'merMod'
confint(object, parm, level = 0.95,
method = c("profile", "Wald", "boot"), zeta,
nsim = 500,
boot.type = c("perc","basic","norm"),
FUN = NULL, quiet = FALSE,
oldNames = TRUE, ...)
# S3 method for class 'thpr'
confint(object, parm, level = 0.95,
zeta, non.mono.tol=1e-2,
...)
Arguments
- object
a fitted [ng]lmer model or profile
- parm
parameters for which intervals are sought. Specified by an integer vector of positions,
character
vector of parameter names, or (unless doing parametric bootstrapping with a user-specified bootstrap function)"theta_"
or"beta_"
to specify variance-covariance or fixed effects parameters only: see thewhich
parameter ofprofile
.- level
confidence level \(< 1\), typically above 0.90.
- method
a
character
string determining the method for computing the confidence intervals.- zeta
(for
method = "profile"
only:) likelihood cutoff (if not specified, as by default, computed fromlevel
).- nsim
number of simulations for parametric bootstrap intervals.
- FUN
bootstrap function; if
NULL
, an internal function that returns the fixed-effect parameters as well as the random-effect parameters on the standard deviation/correlation scale will be used. SeebootMer
for details.- boot.type
bootstrap confidence interval type, as described in
boot.ci
. (Methods ‘stud’ and ‘bca’ are unavailable because they require additional components to be calculated.)- quiet
(logical) suppress messages about computationally intensive profiling?
- oldNames
(logical) use old-style names for variance-covariance parameters, e.g.
".sig01"
, rather than newer (more informative) names such as"sd_(Intercept)|Subject"
? (Seesignames
argument toprofile
).- non.mono.tol
tolerance for detecting a non-monotonic profile and warning/falling back to linear interpolation
- ...
additional parameters to be passed to
profile.merMod
orbootMer
, respectively.
Value
a numeric table (matrix
with column and row names) of
confidence intervals; the confidence intervals are computed on the
standard deviation scale.
Note
The default method "profile"
amounts to
where the profile
method profile.merMod
does almost all the computations. Therefore it is typically
advisable to store the profile(.) result, say
in pp
, and then use confint(pp, level=*)
e.g., for
different levels.
Details
Depending on the method
specified, confint()
computes
confidence intervals by
"profile"
:computing a likelihood profile and finding the appropriate cutoffs based on the likelihood ratio test;
"Wald"
:approximating the confidence intervals (of fixed-effect parameters only; all variance-covariance parameters CIs will be returned as
NA
) based on the estimated local curvature of the likelihood surface;"boot"
:performing parametric bootstrapping with confidence intervals computed from the bootstrap distribution according to
boot.type
(seebootMer
,boot.ci
).
Examples
if (interactive() || lme4_testlevel() >= 3) {
fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
fm1W <- confint(fm1, method="Wald")# very fast, but not useful for "sigmas" = var-cov pars
fm1W
(fm2 <- lmer(Reaction ~ Days + (Days || Subject), sleepstudy))
(CI2 <- confint(fm2, maxpts = 8)) # method = "profile"; 8: to be much faster
DONTSHOW({ stopifnot(all.equal(tolerance = 5e-6, signif(unname(CI2), 7),
array(c(15.25847, 3.964157, 22.88062, 237.5732, 7.33431,
37.78184, 8.768238, 28.78768, 265.2383, 13.60057),
dim = c(5L, 2L))))
})
if (lme4_testlevel() >= 3) {
system.time(fm1P <- confint(fm1, method="profile", ## <- default
oldNames = FALSE))
## --> ~ 2.2 seconds (2022)
set.seed(123) # (reproducibility when using bootstrap)
system.time(fm1B <- confint(fm1, method="boot", oldNames=FALSE,
.progress="txt", PBargs= list(style=3)))
## --> ~ 6.2 seconds (2022) and warning, messages
} else {
load(system.file("testdata","confint_ex.rda",package="lme4"))
}
fm1P
fm1B
} ## if interactive && testlevel>=3