| 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_pandlog_gof the same length containing the posterior density and the approximation density for the individual draws.
Methods (by class)
-
loo_approximate_posterior(array): AnIbyCbyNarray, whereIis the number of MCMC iterations per chain,Cis the number of chains, andNis the number of data points. -
loo_approximate_posterior(matrix): AnSbyNmatrix, whereSis the size of the posterior sample (with all chains merged) andNis the number of data points. -
loo_approximate_posterior(`function`): A functionf()that takes argumentsdata_ianddrawsand returns a vector containing the log-likelihood for a single observationievaluated at each posterior draw. The function should be written such that, for each observationiin1: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_ianddrawsare required.If using the function method then the arguments
dataanddrawsmust 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, theith row ofdatawill be passed to thedata_iargument 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 objectdrawswill be passed to thedrawsargument of the log-likelihood function. The
...can be used if your log-likelihood function takes additional arguments. These arguments are used like thedrawsargument 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.