allFit {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 three 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.
allFit(m, meth.tab = cbind(optimizer = rep(c("bobyqa", "Nelder_Mead", "optimx", "nloptwrap"), c(1, 1, 2, 2)), method = c("", "", "nlminb", "L-BFGS-B", "NLOPT_LN_NELDERMEAD", "NLOPT_LN_BOBYQA")), verbose = TRUE, maxfun = 1e+05, ...)
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 |
Needs packages nloptr and optimx to try out all optimizers. optimx needs to be loaded explicitly using library
or require
.
a list of fitted merMod
objects
Ben Bolker
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 <- allFit(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? ## 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 <- allFit(sk_m2$full.model) sk_m2_allFit # all fits fail sk2_aff_b <- mixed(response ~ instruction*inference*type+(inference*type||id), sk2_aff, expand_re = TRUE, return = "data") # returns data only sk_m2_allFit <- allFit(sk_m2$full.model, data = sk2_aff_b) # works now t(sapply(sk_m2_allFit,fixef)) sapply(sk_m2_allFit,logLik) ## End(Not run)