Last chance! 50% off unlimited learning
Sale ends in
lmer
model using multiple optimizersAttempt to re-fit a [g]lmer model with a range of optimizers.
The default is to use all known optimizers for R that satisfy the
requirements (do not require explicit gradients, allow
box constraints), in four categories; (i) built-in
(minqa::bobyqa
, lme4::Nelder_Mead
), (ii) wrapped via optimx
(most of optimx's optimizers that allow box constraints require
an explicit gradient function to be specified; the two provided
here are really base R functions that can be accessed via optimx,
(iii) wrapped via nloptr, (iv) dfoptim::nmkb
.
all_fit(
m,
meth_tab = cbind(optimizer = rep(c("bobyqa", "Nelder_Mead", "optimx", "nloptwrap",
"nmkbw"), c(1, 1, 2, 2, 1)), method = c("", "", "nlminb", "L-BFGS-B",
"NLOPT_LN_NELDERMEAD", "NLOPT_LN_BOBYQA", "")),
verbose = TRUE,
maxfun = 1e+06,
...
)nmkbw(fn, par, lower, upper, control)
a fitted model with lmer
a matrix (or data.frame) with columns
- method the name of a specific optimization method to pass to the optimizer
(leave blank for built-in optimizers)
- optimizer the optimizer
function to use
print progress messages?
number of iterations to allow for the optimization rountine.
further arguments passed to update.merMod
such as data
.
needed for dfoptim::nmkb
needed for dfoptim::nmkb
needed for dfoptim::nmkb
needed for dfoptim::nmkb
needed for dfoptim::nmkb
a list of fitted merMod
objects
Needs packages nloptr, optimx, and dfoptim
to try out all optimizers. optimx needs to be loaded explicitly using library
or require
(see examples).
nmkbw
is a simple wrapper function for fitting models with the corresponding optimizer. It needs to be exported for lme4
, but should not be called directly by the user.
slice, slice2D in the bbmle package
# NOT RUN {
# }
# NOT RUN {
# basic usage
require(optimx)
gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
data = cbpp, family = binomial)
gm_all <- all_fit(gm1)
t(sapply(gm_all,fixef)) ## extract fixed effects
sapply(gm_all,logLik) ## log-likelihoods
sapply(gm_all,getME,"theta") ## theta parameters
!sapply(gm_all,inherits,"try-error") ## was fit OK?
## for GLMMs:
require("mlmRev") # for data
gm1 <- mixed(use ~ age*urban + (1 | district), family = binomial,
data = Contraception, method = "LRT")
gm_all <- all_fit(gm1$full_model)
sapply(gm_all,logLik)
## use allFit in combination with expand.re = TRUE
data("sk2011.2") # see example("mixed")
sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",])
sk_m2 <- mixed(response ~ instruction*inference*type+(inference*type||id), sk2_aff,
expand_re = TRUE)
sk_m2
sk_m2_allFit <- all_fit(sk_m2$full_model)
sk_m2_allFit # all fits fail
sk_m2_allFit <- all_fit(sk_m2$full_model, data = sk_m2$data) # works
t(sapply(sk_m2_allFit,fixef))
sapply(sk_m2_allFit,logLik)
# }
Run the code above in your browser using DataLab