all_fit: Refit 'lmer' model using multiple optimizers

Description Usage Arguments Details Value Note Author(s) See Also Examples

View source: R/allFit.R

Description

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.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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)

Arguments

m

a fitted model with lmer

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 optimizer function to use

verbose

print progress messages?

maxfun

number of iterations to allow for the optimization rountine.

...

further arguments passed to update.merMod such as data.

fn

needed for dfoptim::nmkb

par

needed for dfoptim::nmkb

lower

needed for dfoptim::nmkb

upper

needed for dfoptim::nmkb

control

needed for dfoptim::nmkb

Details

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.

Value

a list of fitted merMod objects

Note

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.

Author(s)

Ben Bolker, minor changes by Henrik Singmann

See Also

slice, slice2D in the bbmle package

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
## 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)

afex documentation built on July 22, 2021, 9:07 a.m.