all_fit {afex} | R Documentation |
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)
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
code taken from https://github.com/lme4/lme4/blob/master/inst/utils/allFit.R
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)