arviz.waic#
- arviz.waic(data, pointwise=None, var_name=None, scale=None, dask_kwargs=None)[source]#
Compute the widely applicable information criterion.
Estimates the expected log pointwise predictive density (elpd) using WAIC. Also calculates the WAIC’s standard error and the effective number of parameters. Read more theory here https://arxiv.org/abs/1507.04544 and here https://arxiv.org/abs/1004.2316
- Parameters:
- data: obj
Any object that can be converted to an
arviz.InferenceData
object. Refer to documentation ofarviz.convert_to_inference_data()
for details.- pointwise: bool
If True the pointwise predictive accuracy will be returned. Defaults to
stats.ic_pointwise
rcParam.- var_name
str
, optional The name of the variable in log_likelihood groups storing the pointwise log likelihood data to use for waic computation.
- scale: str
Output scale for WAIC. Available options are:
log
: (default) log-scorenegative_log
: -1 * log-scoredeviance
: -2 * log-score
A higher log-score (or a lower deviance or negative log_score) indicates a model with better predictive accuracy.
- dask_kwargs
dict
, optional Dask related kwargs passed to
wrap_xarray_ufunc()
.
- Returns:
ELPDData
object
(inherits
from
pandas.Series
)with
the
following
row/attributes:- elpd_waic:
approximated
expected
log
pointwise
predictive
density
(elpd
) - se:
standard
error
ofthe
elpd
- p_waic:
effective
number
parameters
- n_samples:
number
ofsamples
- n_data_points:
number
ofdata
points
- warning: bool
True if posterior variance of the log predictive densities exceeds 0.4
- waic_i:
DataArray
with
the
pointwise
predictive
accuracy, only if pointwise=True
- scale:
scale
ofthe
elpd
The returned object has a custom print method that overrides pd.Series method.
See also
loo
Compute Pareto-smoothed importance sampling leave-one-out cross-validation (PSIS-LOO-CV).
compare
Compare models based on PSIS-LOO-CV or WAIC.
plot_compare
Summary plot for model comparison.
Examples
Calculate WAIC of a model:
In [1]: import arviz as az ...: data = az.load_arviz_data("centered_eight") ...: az.waic(data) ...: Out[1]: Computed from 2000 posterior samples and 8 observations log-likelihood matrix. Estimate SE elpd_waic -30.74 1.34 p_waic 0.91 -
Calculate WAIC of a model and return the pointwise values:
In [2]: data_waic = az.waic(data, pointwise=True) ...: data_waic.waic_i ...: Out[2]: <xarray.DataArray 'waic_i' (school: 8)> Size: 64B array([-4.88183718, -3.41680906, -3.86581024, -3.46151052, -3.47061294, -3.49819736, -4.18890062, -3.95780072]) Coordinates: * school (school) <U16 512B 'Choate' 'Deerfield' ... 'Mt. Hermon'