Version: 1.0-6
Date: 2024-09-06
Title: Bayesian Linear Mixed-Effects Models
Depends: R (≥ 3.0-0), lme4 (≥ 1.0-6)
Imports: methods, stats, utils
Suggests: expint (≥ 0.1-3), testthat
Description: Maximum a posteriori estimation for linear and generalized linear mixed-effects models in a Bayesian setting, implementing the methods of Chung, et al. (2013) <doi:10.1007/s11336-013-9328-2>. Extends package 'lme4' (Bates, Maechler, Bolker, and Walker (2015) <doi:10.18637/jss.v067.i01>).
License: GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]
URL: https://github.com/vdorie/blme
BugReports: https://github.com/vdorie/blme/issues
NeedsCompilation: no
Packaged: 2024-09-07 03:08:42 UTC; vdorie
Author: Vincent Dorie ORCID iD [aut, cre], Douglas Bates ORCID iD [ctb] (lme4 non-modular functions), Martin Maechler ORCID iD [ctb] (lme4 non-modular functions), Ben Bolker ORCID iD [ctb] (lme4 non-modular functions), Steven Walker ORCID iD [ctb] (lme4 non-modular functions)
Maintainer: Vincent Dorie <vdorie@gmail.com>
Repository: CRAN
Date/Publication: 2024-09-07 13:20:02 UTC

Fit Bayesian Linear and Generalized Linear Mixed-Effects Models

Description

Maximum a posteriori estimation for linear and generalized linear mixed-effects models in a Bayesian setting. Built off of lmer.

Usage

blmer(formula, data = NULL, REML = TRUE,
      control = lmerControl(), start = NULL, verbose = 0L,
      subset, weights, na.action, offset, contrasts = NULL,
      devFunOnly = FALSE, cov.prior = wishart,
      fixef.prior = NULL, resid.prior = NULL, ...)
bglmer(formula, data = NULL, family = gaussian,
       control = glmerControl(), start = NULL, verbose = 0L,
       nAGQ = 1L, subset, weights, na.action, offset,
       contrasts = NULL, mustart, etastart,
       devFunOnly = FALSE, cov.prior = wishart,
       fixef.prior = NULL, ...)

Arguments

cov.prior

a BLME prior or list of priors with allowable distributions: wishart, invwishart, gamma, invgamma, or NULL. Imposes a prior over the covariance of the random effects/modeled coefficients. Default is wishart. The NULL argument imposes flat priors over all relevant parameters.

fixef.prior

a BLME prior of family normal, t, horseshoe, or NULL. Imposes a prior over the fixed effects/modeled coefficients. Default is NULL.

resid.prior

a BLME prior of family gamma, invamma, point or NULL. Imposes a prior over the noise/residual variance, also known as common scale parameter or the conditional variance given the random effects. Default is NULL.

start

like the start arguments for lmer and glmer a numeric vector or named list. Unlike the aforementioned, list members of fixef and sigma are applicable to linear mixed models provided that numeric optimization is required for these parameters.

formula, data, REML, family, control, verbose, nAGQ, mustart, etastart, devFunOnly, ...

model specification arguments as in lmer and glmer; see there for details.

subset, weights, na.action, offset, contrasts

further model specification arguments as in lm; see there for details.

Details

The bulk of the usage for blmer and bglmer closely follows the functions lmer and glmer. Those help pages provide a good overview of fitting linear and generalized linear mixed models. The primary distinction is that blmer and bglmer allow the user to do Bayesian inference or penalized maximum likelihood, with priors imposed on the different model components. For the specifics of any distribution listed below, see the distributions page.

Covariance Prior

The cov.prior argument applies a prior over the covariance matrix of the random effects/modeled coefficients. As there is one covariance matrix for every named grouping factor - that is every element that appears to the right of a vertical bar ("|") in the model formula - it is possible to apply as many different priors as there are said factors.

The general formats of an argument to blmer or bglmer for such a prior are of the form:

If the “factor.name ~” construct is ommitted, the prior is interpretted as a default and applied to all factors that lack specific priors of their own. Options are not required, but permit fine-tuning of the model.

Supported distributions are gamma, invgamma, wishart, invwishart, NULL, and custom.

The common.scale option, a logical, determines whether or not the prior applies to in the absolute-real world sense (value = FALSE), or if the prior is applied to the random effect covariance divided by the estimated residual variance (TRUE). As a practical matter, when false computation can be slower as the profiled common scale may no longer have a closed-form solution. As such, the default for all cases is TRUE.

Other options are specified along with the specific distributions and defaults are explained in the blme distributions page.

Fixed Effects Prior

Priors on the fixed effects, or unmodeled coefficients, are specified in a fashion similar to that of covariance priors. The general format is

At present, the implemented multivariate distributions are normal, t, horseshoe, and NULL. t and horseshoe priors cannot be used when REML is TRUE, as that integral does not have a closed form solution.

Residual Variance Prior

The general format for a residual variance prior is the same as for a fixed effect prior. The supported distributions are point, gamma, invgamma.

Value

An object of class "bmerMod", for which many methods are available. See there for details.

See Also

lmer, glmer, merMod class, and lm.

Examples

data("sleepstudy", package = "lme4")

### Examples using a covariance prior ##

# Here we are ignoring convergence warnings just to illustate how the package
# is used: this is not a good idea in practice..
control <- lmerControl(check.conv.grad = "ignore")
(fm1 <- blmer(Reaction ~ Days + (0 + Days|Subject), sleepstudy,
              control = control,
              cov.prior = gamma))
(fm2 <- blmer(Reaction ~ Days + (0 + Days|Subject), sleepstudy,
              control = control,
              cov.prior = gamma(shape = 2, rate = 0.5, posterior.scale = 'sd')))
(fm3 <- blmer(Reaction ~ Days + (1 + Days|Subject), sleepstudy,
              control = control,
              cov.prior = wishart))
(fm4 <- blmer(Reaction ~ Days + (1 + Days|Subject), sleepstudy,
              control = control,
              cov.prior = invwishart(df = 5, scale = diag(0.5, 2))))

# Custom prior
penaltyFn <- function(sigma)
  dcauchy(sigma, 0, 10, log = TRUE)
(fm5 <- blmer(Reaction ~ Days + (0 + Days|Subject), sleepstudy,
              cov.prior = custom(penaltyFn, chol = TRUE, scale = "log")))


### Examples using a fixed effect prior ###
(fm6 <- blmer(Reaction ~ Days + (1 + Days|Subject), sleepstudy,
              cov.prior = NULL,
              fixef.prior = normal))
(fm7 <- blmer(Reaction ~ Days + (1 + Days|Subject), sleepstudy,
              cov.prior = NULL,
              fixef.prior = normal(cov = diag(0.5, 2), common.scale = FALSE)))

### Example using a residual variance prior ###
# This is the "eight schools" data set; the mode should be at the boundary
# of the space.

control <- lmerControl(check.conv.singular = "ignore",
                       check.nobs.vs.nRE   = "ignore",
                       check.nobs.vs.nlev  = "ignore")
y <- c(28, 8, -3, 7, -1, 1, 18, 12)
sigma <- c(15, 10, 16, 11, 9, 11, 10, 18)
g <- 1:8

(schools <- blmer(y ~ 1 + (1 | g), control = control, REML = FALSE,
                  resid.prior = point, cov.prior = NULL,
                  weights = 1 / sigma^2))

Bayesian Linear Mixed-Effects Model Prior Representations and bmer*Dist Methods

Description

Objects created in the initialization step of a blme model that represent the type of prior being applied.

Objects from the Class

Objects can be created by calls of the form new("bmerPrior", ...) or, more commonly, as side effects of the blmer and bglmer functions.

When using the main blme functions, the prior-related arguments can be passed what essentially are function calls with the distinction that they are delayed in evaluation until information about the model is available. At that time, the functions are defined in a special environment and then evaluated in an environment that directly inherits from the one in which blmer or bglmer was called. This is reflected in some of the prototypes of various prior-creating functions which depend on parameters not available in the top-level environment.

Finally, if the trailing parentheses are omitted from a blmer/bglmer prior argument, they are simply added as a form of “syntactic sugar”.

Prior Distributions

This section lists the prototypes for the functions that are called to parse a prior during a model fit.

Fixed Effect Priors

Covariance Priors

Residual Variance Priors

Evaluating Environment

The variables that the defining environment have populated are:

Methods

toString

Pretty-prints the distribution and its parameters.

References

Carvalho, Carlos M., Nicholas G. Polson, and James G. Scott. "Handling Sparsity via the Horseshoe." AISTATS. Vol. 5. 2009.

See Also

blmer() and bglmer(), which produce these objects, and bmerMod-class objects which contain them.


Class "bmerMod" of Fitted Mixed-Effect Models

Description

The bmerMod class represents linear or generalized linear or nonlinear mixed-effects models with possible priors over model components. It inherits from the merMod class.

Objects from the Class

Objects are created by calls to blmer or bglmer.

Slots

A bmerMod object contains one additional slot beyond the base merMod class:

priors:

A named list comprised of covPriors, fixefPrior, and residPrior.

In addition, the devcomp slot, element cmp includes the penalty item which is the computed deviance for the priors. Add this to the regular deviance to obtain the value of the objective function that is used in optimization.

See Also

blmer and bglmer, which produce these objects.
merMod, from which this class inherits.

Examples

showClass("bmerMod")
methods(class = "bmerMod")