Compute weighted expectations
The E_loo()
function computes weighted expectations (means, variances,
quantiles) using the importance weights obtained from the
PSIS smoothing procedure. The expectations estimated by the
E_loo()
function assume that the PSIS approximation is working well.
A small Pareto k estimate is necessary,
but not sufficient, for E_loo()
to give reliable estimates. Additional
diagnostic checks for gauging the reliability of the estimates are in
development and will be added in a future release.
E_loo(x, psis_object, ...) ## Default S3 method: E_loo( x, psis_object, ..., type = c("mean", "variance", "quantile"), probs = NULL, log_ratios = NULL ) ## S3 method for class 'matrix' E_loo( x, psis_object, ..., type = c("mean", "variance", "quantile"), probs = NULL, log_ratios = NULL )
x |
A numeric vector or matrix. |
psis_object |
An object returned by |
... |
Arguments passed to individual methods. |
type |
The type of expectation to compute. The options are
|
probs |
For computing quantiles, a vector of probabilities. |
log_ratios |
Optionally, a vector or matrix (the same dimensions as |
A named list with the following components:
value
The result of the computation.
For the matrix method, value
is a vector with ncol(x)
elements, with one exception: when type="quantile"
and
multiple values are specified in probs
the value
component of
the returned object is a length(probs)
by ncol(x)
matrix.
For the default/vector method the value
component is scalar, with
one exception: when type
is "quantile"
and multiple values
are specified in probs
the value
component is a vector with
length(probs)
elements.
pareto_k
Function-specific diagnostic.
If log_ratios
is not specified when calling E_loo()
,
pareto_k
will be NULL
. Otherwise, for the matrix method it
will be a vector of length ncol(x)
containing estimates of the shape
parameter k of the generalized Pareto distribution. For the
default/vector method, the estimate is a scalar.
# Use rstanarm package to quickly fit a model and get both a log-likelihood # matrix and draws from the posterior predictive distribution library("rstanarm") # 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 <- stan_glm(weight ~ group, data = d, refresh = 0) yrep <- posterior_predict(fit) dim(yrep) log_ratios <- -1 * log_lik(fit) dim(log_ratios) r_eff <- relative_eff(exp(-log_ratios), chain_id = rep(1:4, each = 1000)) psis_object <- psis(log_ratios, r_eff = r_eff, cores = 2) E_loo(yrep, psis_object, type = "mean") E_loo(yrep, psis_object, type = "var") E_loo(yrep, psis_object, type = "quantile", probs = 0.5) # median E_loo(yrep, psis_object, type = "quantile", probs = c(0.1, 0.9)) # To get Pareto k diagnostic with E_loo we also need to provide the negative # log-likelihood values using the log_ratios argument. E_loo(yrep, psis_object, type = "mean", log_ratios = log_ratios)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.