waic() methods can be used to compute WAIC from the pointwise
log-likelihood. However, we recommend LOO-CV using PSIS (as implemented by
loo() function) because PSIS provides useful diagnostics as well as
effective sample size and Monte Carlo estimates.
waic(x, ...) # S3 method for array waic(x, ...) # S3 method for matrix waic(x, ...) # S3 method for `function` waic(x, ..., data = NULL, draws = NULL) is.waic(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.
|draws, data, ...||
For the function method only. See the Methods (by class) section below for details on these arguments.
A named list (of class
c("waic", "loo")) with components:
A matrix with two columns (
"SE") and three
"waic"). This contains
point estimates and standard errors of the expected log pointwise predictive
elpd_waic), the effective number of parameters
p_waic) and the information criterion
waic (which is just
-2 * elpd_waic, i.e., converted to deviance scale).
A matrix with three columns (and number of rows equal to the number of
observations) containing the pointwise contributions of each of the above
array: An \(I\) by \(C\) by \(N\) array, where \(I\)
is the number of MCMC iterations per chain, \(C\) is the number of
chains, and \(N\) is the number of data points.
matrix: An \(S\) by \(N\) matrix, where \(S\) is the size
of the posterior sample (with all chains merged) and \(N\) is the number
of data points.
function: A function
f() that takes arguments
draws and returns a
vector containing the log-likelihood for a single observation
at each posterior draw. The function should be written such that, for each
f(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 but
draws are required.
If using the function method then the arguments
draws must also
be specified in the call to
data: A data frame or matrix containing the data (e.g.
observed outcome and predictors) needed to compute the pointwise
log-likelihood. For each observation
ith row of
data will be passed to the
data_i argument of the
draws: An object containing the posterior draws for any
parameters needed to compute the pointwise log-likelihood. Unlike
data, which is indexed by observation, for each observation the
draws will be passed to the
draws argument of
the log-likelihood function.
... can be used if your log-likelihood function takes additional
arguments. These arguments are used like the
draws argument in that they
are recycled for each observation.
Watanabe, S. (2010). Asymptotic equivalence of Bayes cross validation and widely application information criterion in singular learning theory. Journal of Machine Learning Research 11, 3571-3594.
Vehtari, A., Gelman, A., and Gabry, J. (2017a). Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC. Statistics and Computing. 27(5), 1413--1432. doi:10.1007/s11222-016-9696-4 (journal version, preprint arXiv:1507.04544).
Vehtari, A., Simpson, D., Gelman, A., Yao, Y., and Gabry, J. (2019). Pareto smoothed importance sampling. preprint arXiv:1507.02646
#>  500 2 32#>  1000 32waic_arr <- waic(LLarr)#> Warning: #> 3 (9.4%) p_waic estimates greater than 0.4. We recommend trying loo instead.waic_mat <- waic(LLmat)#> Warning: #> 3 (9.4%) p_waic estimates greater than 0.4. We recommend trying loo instead.identical(waic_arr, waic_mat)#>  TRUE