Refit lmer model using multiple optimizers
Attempt 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)
m |
a fitted model with |
meth_tab |
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 |
verbose |
print progress messages? |
maxfun |
number of iterations to allow for the optimization rountine. |
... |
further arguments passed to |
fn |
needed for |
par |
needed for |
lower |
needed for |
upper |
needed for |
control |
needed for |
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.
a list of fitted merMod
objects
Very similar to the function of the same name that is part of lme4. The present function will be removed eventually in favor of the lme4 function.
Ben Bolker, minor changes by Henrik Singmann
slice, slice2D in the bbmle package
## 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) ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.