arviz.plot_compare(comp_df, insample_dev=False, plot_standard_error=True, plot_ic_diff=True, order_by_rank=True, legend=True, title=True, figsize=None, textsize=None, labeller=None, plot_kwargs=None, ax=None, backend=None, backend_kwargs=None, show=None)[source]#

Summary plot for model comparison.

Models are compared based on their expected log pointwise predictive density (ELPD). This plot is in the style of the one used in [2]. Chapter 6 in the first edition or 7 in the second.


Result of the method.

insample_devbool, default False

Plot in-sample ELPD, that is the value of the information criteria without the penalization given by the effective number of parameters (p_loo or p_waic).

plot_standard_errorbool, default True

Plot the standard error of the ELPD.

plot_ic_diffbool, default True

Plot standard error of the difference in ELPD between each model and the top-ranked model.

order_by_rankbool, default True

If True ensure the best model is used as reference.

legendbool, default True

Add legend to figure.

figsize(float, float), optional

If None, size is (6, num of models) inches.

titlebool, default True

Show a tittle with a description of how to interpret the plot.

textsizefloat, optional

Text size scaling factor for labels, titles and lines. If None it will be autoscaled based on figsize.

labellerLabeller, optional

Class providing the method make_label_vert to generate the labels in the plot titles. Read the Label guide for more details and usage examples.

plot_kwargsdict, optional

Optional arguments for plot elements. Currently accepts ‘color_ic’, ‘marker_ic’, ‘color_insample_dev’, ‘marker_insample_dev’, ‘color_dse’, ‘marker_dse’, ‘ls_min_ic’ ‘color_ls_min_ic’, ‘fontsize’

axmatplotlib Axes or Bokeh Figure, optional

Matplotlib axes or bokeh figure.

backend{“matplotlib”, “bokeh”}, default “matplotlib”

Select plotting backend.

backend_kwargsbool, optional

These are kwargs specific to the backend being used, passed to matplotlib.pyplot.subplots() or bokeh.plotting.figure. For additional documentation check the plotting method of the backend.

showbool, optional

Call backend show function.

axesmatplotlib Axes or Bokeh Figure

See also


Plot pointwise elpd differences between two or more models.


Compare models based on PSIS-LOO loo or WAIC waic cross-validation.


Compute Pareto-smoothed importance sampling leave-one-out cross-validation (PSIS-LOO-CV).


Compute the widely applicable information criterion.


The ELPD is estimated either by Pareto smoothed importance sampling leave-one-out cross-validation (LOO) or using the widely applicable information criterion (WAIC). We recommend LOO in line with the work presented by [1].



Vehtari et al. (2016). Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC


McElreath R. (2022). Statistical Rethinking A Bayesian Course with Examples in R and Stan, Second edition, CRC Press.


Show default compare plot

>>> import arviz as az
>>> model_compare ={'Centered 8 schools': az.load_arviz_data('centered_eight'),
>>>                  'Non-centered 8 schools': az.load_arviz_data('non_centered_eight')})
>>> az.plot_compare(model_compare)

Include the in-sample ELDP

>>> az.plot_compare(model_compare, insample_dev=True)