Learn R Programming

brms (version 2.1.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"),
  resp = NULL, probs = 0.5, lw = NULL, cores = 1, wcp = 0.2,
  wtrunc = 3/4, ...)

# S3 method for brmsfit loo_linpred(object, type = c("mean", "var", "quantile"), resp = NULL, probs = 0.5, scale = "linear", lw = NULL, cores = 1, wcp = 0.2, wtrunc = 3/4, ...)

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

Arguments

object

An object of class brmsfit.

type

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

resp

Optional names of response variables. If specified, fitted values of these response variables are returned.

probs

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

lw

An optional matrix of (smoothed) log-weights. If lw is missing then psislw is executed internally, which may be time consuming for models fit to very large datasets. If lw is specified, arguments passed via ... may be ignored.

cores

The number of cores to use for parallelization. Default is 1.

wcp

Parameters used for the Pareto smoothed importance sampling. See loo for details.

wtrunc

Parameters used for the Pareto smoothed importance sampling. See loo for details.

...

Optional arguments passed to the underlying methods that is log_lik, as well as predict or fitted.

scale

Passed to fitted.

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).

Value

loo_predict and loo_linpred return a vector with one element per observation. The only exception is if type = "quantile" and length(probs) >= 2, in which case a separate vector for each element of probs is computed and they are returned in a matrix with length(probs) rows and one column per observation.

loo_predictive_interval returns a matrix with one row per observation and two columns. loo_predictive_interval(..., prob = p) is equivalent to loo_predict(..., type = "quantile", probs = c(a, 1-a)) with a = (1 - p)/2, except it transposes the result and adds informative column names.

Examples

Run this code
# NOT RUN {
## 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::psislw(-log_lik(fit), cores = 2)
loo_predictive_interval(fit, prob = 0.8, lw = psis$lw_smooth)
loo_predict(fit, type = "var", lw = psis$lw_smooth)
# }
# NOT RUN {
# }

Run the code above in your browser using DataLab