Learn R Programming

brms (version 2.22.0)

loo_predict.brmsfit: Compute Weighted Expectations Using LOO

Description

These functions are wrappers around the E_loo function of the loo package.

Usage

# S3 method for brmsfit
loo_predict(
  object,
  type = c("mean", "var", "quantile"),
  probs = 0.5,
  psis_object = NULL,
  resp = NULL,
  ...
)

# S3 method for brmsfit loo_epred( object, type = c("mean", "var", "quantile"), probs = 0.5, psis_object = NULL, resp = NULL, ... )

loo_epred(object, ...)

# S3 method for brmsfit loo_linpred( object, type = c("mean", "var", "quantile"), probs = 0.5, psis_object = NULL, resp = NULL, ... )

# S3 method for brmsfit loo_predictive_interval(object, prob = 0.9, psis_object = NULL, ...)

Value

loo_predict, loo_epred, loo_linpred, and

loo_predictive_interval all return a matrix with one row per observation and one column per summary statistic as specified by arguments type and probs. In multivariate or categorical models a third dimension is added to represent the response variables or categories, respectively.

loo_predictive_interval(..., prob = p) is equivalent to

loo_predict(..., type = "quantile", probs = c(a, 1-a)) with

a = (1 - p)/2.

Arguments

object

An object of class brmsfit.

type

The statistic to be computed on the results. Can by either "mean" (default), "var", or "quantile".

probs

A vector of quantiles to compute. Only used if type = quantile.

psis_object

An optional object returned by psis. If psis_object is missing then psis is executed internally, which may be time consuming for models fit to very large datasets.

resp

Optional names of response variables. If specified, predictions are performed only for the specified response variables.

...

Optional arguments passed to the underlying methods that is log_lik, as well as posterior_predict, posterior_epred or posterior_linpred.

prob

For loo_predictive_interval, a scalar in \((0,1)\) indicating the desired probability mass to include in the intervals. The default is prob = 0.9 (\(90\)% intervals).

Examples

Run this code
if (FALSE) {
## data from help("lm")
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
d <- data.frame(
  weight = c(ctl, trt),
  group = gl(2, 10, 20, labels = c("Ctl", "Trt"))
)
fit <- brm(weight ~ group, data = d)
loo_predictive_interval(fit, prob = 0.8)

## optionally log-weights can be pre-computed and reused
psis <- loo::psis(-log_lik(fit), cores = 2)
loo_predictive_interval(fit, prob = 0.8, psis_object = psis)
loo_predict(fit, type = "var", psis_object = psis)
loo_epred(fit, type = "var", psis_object = psis)
}

Run the code above in your browser using DataLab