| E_loo {loo} | R Documentation |
The E_loo function computes weighted expectations (means, variances,
quantiles) using the smoothed importance weights obtained from the
PSIS 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, lw, ...)
## Default S3 method:
E_loo(x, lw, ..., type = c("mean", "var", "quantile"),
probs)
## S3 method for class 'matrix'
E_loo(x, lw, ..., type = c("mean", "var", "quantile"), probs)
x |
A numeric matrix or vector. |
lw |
A numeric matrix (or vector) of smoothed log-weights with the same
dimensions (or length) as |
... |
For the generic function, arguments passed to the individual methods. |
type |
The type of expectation to compute. The options are
|
probs |
A vector of probabilities. Ignored unless |
The matrix method returns a vector with ncol(x) elements, with
one exception: when type is "quantile" and multiple values
are specified in probs the returned object is a length(probs)
by ncol(x) matrix.
The default/vector method returns a scalar, with one exception: when
type is "quantile" and multiple values are specified in
probs the returned object is a vector with length(probs)
elements.
# 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)
yrep <- posterior_predict(fit)
dim(yrep)
ll <- log_lik(fit)
lw <- psislw(-ll, cores = 2)$lw_smooth
dim(lw)
E_loo(yrep, lw, type = "mean")
E_loo(yrep, lw, type = "var")
E_loo(yrep, lw, type = "quantile", probs = 0.5) # median
E_loo(yrep, lw, type = "quantile", probs = c(0.1, 0.9))