loo_approximate_posterior {loo} | R Documentation |
Efficient approximate leave-one-out cross-validation (LOO) for posterior approximations
Description
Efficient approximate leave-one-out cross-validation (LOO) for posterior approximations
Usage
loo_approximate_posterior(x, log_p, log_g, ...)
## S3 method for class 'array'
loo_approximate_posterior(
x,
log_p,
log_g,
...,
save_psis = FALSE,
cores = getOption("mc.cores", 1)
)
## S3 method for class 'matrix'
loo_approximate_posterior(
x,
log_p,
log_g,
...,
save_psis = FALSE,
cores = getOption("mc.cores", 1)
)
## S3 method for class ''function''
loo_approximate_posterior(
x,
...,
data = NULL,
draws = NULL,
log_p = NULL,
log_g = NULL,
save_psis = FALSE,
cores = getOption("mc.cores", 1)
)
Arguments
x |
A log-likelihood array, matrix, or function. The Methods (by class) section, below, has detailed descriptions of how to specify the inputs for each method. |
log_p |
The log-posterior (target) evaluated at S samples from the proposal distribution (g). A vector of length S. |
log_g |
The log-density (proposal) evaluated at S samples from the proposal distribution (g). A vector of length S. |
save_psis |
Should the |
cores |
The number of cores to use for parallelization. This defaults to
the option
|
data , draws , ... |
For the |
Details
The loo_approximate_posterior()
function is an S3 generic and
methods are provided for 3-D pointwise log-likelihood arrays, pointwise
log-likelihood matrices, and log-likelihood functions. The implementation
works for posterior approximations where it is possible to compute the log
density for the posterior approximation.
Value
The loo_approximate_posterior()
methods return a named list with
class c("psis_loo_ap", "psis_loo", "loo")
. It has the same structure
as the objects returned by loo()
but with the additional slot:
posterior_approximation
-
A list with two vectors,
log_p
andlog_g
of the same length containing the posterior density and the approximation density for the individual draws.
Methods (by class)
-
loo_approximate_posterior(array)
: AnI
byC
byN
array, whereI
is the number of MCMC iterations per chain,C
is the number of chains, andN
is the number of data points. -
loo_approximate_posterior(matrix)
: AnS
byN
matrix, whereS
is the size of the posterior sample (with all chains merged) andN
is the number of data points. -
loo_approximate_posterior(`function`)
: A functionf()
that takes argumentsdata_i
anddraws
and returns a vector containing the log-likelihood for a single observationi
evaluated at each posterior draw. The function should be written such that, for each observationi
in1:N
, evaluatingf(data_i = data[i,, drop=FALSE], draws = draws)
results in a vector of length
S
(size of posterior sample). The log-likelihood function can also have additional arguments butdata_i
anddraws
are required.If using the function method then the arguments
data
anddraws
must also be specified in the call toloo()
:-
data
: A data frame or matrix containing the data (e.g. observed outcome and predictors) needed to compute the pointwise log-likelihood. For each observationi
, thei
th row ofdata
will be passed to thedata_i
argument of the log-likelihood function. -
draws
: An object containing the posterior draws for any parameters needed to compute the pointwise log-likelihood. Unlikedata
, which is indexed by observation, for each observation the entire objectdraws
will be passed to thedraws
argument of the log-likelihood function. The
...
can be used if your log-likelihood function takes additional arguments. These arguments are used like thedraws
argument in that they are recycled for each observation.
-
References
Magnusson, M., Riis Andersen, M., Jonasson, J. and Vehtari, A. (2019). Leave-One-Out Cross-Validation for Large Data. In Thirty-sixth International Conference on Machine Learning, PMLR 97:4244-4253.
Magnusson, M., Riis Andersen, M., Jonasson, J. and Vehtari, A. (2020). Leave-One-Out Cross-Validation for Model Comparison in Large Data. In Proceedings of the 23rd International Conference on Artificial Intelligence and Statistics (AISTATS), PMLR 108:341-351.