Plot Bayesian p-value for observed data and Posterior/Prior predictive.
InferenceData
arviz.InferenceData
object containing the observed and posterior/prior predictive data.
Specify the kind of plot:
The kind="p_value"
computes \(p := p(y* \leq y | y)\). This is the probability of the data y being larger or equal than the predicted data y*. The ideal value is 0.5 (half the predictions below and half above the data).
The kind="u_value"
argument computes \(p_i := p(y_i* \leq y_i | y)\). i.e. like a p_value but per observation \(y_i\). This is also known as marginal p_value. The ideal distribution is uniform. This is similar to the LOO-PIT calculation/plot, the difference is than in LOO-pit plot we compute \(pi = p(y_i* r \leq y_i | y_{-i} )\), where \(y_{-i}\), is all other data except \(y_i\).
The kind="t_stat"
argument computes \(:= p(T(y)* \leq T(y) | y)\) where T is any test statistic. See t_stat
argument below for details of available options.
str
, float
, or callable()
, default “median”
Test statistics to compute from the observations and predictive distributions. Allowed strings are “mean”, “median” or “std”. Alternative a quantile can be passed as a float (or str) in the interval (0, 1). Finally a user defined function is also acepted, see examples section for details.
True
If True add the Bayesian p_value to the legend when kind = t_stat
.
True
Whether or not to plot the mean test statistic.
None
}, default “analytical”
How to compute the distributions used as reference for kind=u_values
or kind=p_values
. Use None
to not plot any reference.
If True and the data has integer dtype, smooth the data before computing the p-values, u-values or tstat. By default, True when kind
is “u_value” and False otherwise.
False
Show scaled mean square error between uniform distribution and marginal p_value distribution.
int
, default 100
Number of reference distributions to sample when reference=samples
.
float
, optional
Probability for the highest density interval for the analytical reference distribution when kind=u_values
. Should be in the interval (0, 1]. Defaults to the rcParam stats.ci_prob
. See this section for usage examples.
str
, optional
Matplotlib color
tuple
, optional
Number of rows and columns. By default, the rows and columns are automatically inferred. See this section for usage examples.
float
, float
), optional
Figure size. If None it will be defined automatically.
float
, optional
Text size scaling factor for labels, titles and lines. If None it will be autoscaled based on figsize
.
dict
, optional
Dictionary containing relations between observed data and posterior/prior predictive data. Dictionary structure:
key = data var_name
value = posterior/prior predictive var_name
For example, data_pairs = {'y' : 'y_hat'}
If None, it will assume that the observed data and the posterior/prior predictive data have the same variable name.
Class providing the method make_pp_label
to generate the labels in the plot titles. Read the Label guide for more details and usage examples.
list
of str
, optional
Variables to be plotted. If None
all variable are plotted. Prefix the variables by ~
when you want to exclude them from the plot. See the this section for usage examples. See this section for usage examples.
None
, “like”, “regex”}, default None
If None
(default), interpret var_names
as the real variables names. If “like”, interpret var_names
as substrings of the real variables names. If “regex”, interpret var_names
as regular expressions on the real variables names. See this section for usage examples.
dict
, optional
Dictionary mapping dimensions to selected coordinates to be plotted. Dimensions without a mapping specified will include all coordinates for that dimension. Defaults to including all coordinates for all dimensions if None. See this section for usage examples.
list
, optional
List of dimensions to flatten in observed_data. Only flattens across the coordinates specified in the coords argument. Defaults to flattening all of the dimensions.
list
, optional
List of dimensions to flatten in posterior_predictive/prior_predictive. Only flattens across the coordinates specified in the coords argument. Defaults to flattening all of the dimensions. Dimensions should match flatten excluding dimensions for data_pairs parameters. If flatten
is defined and flatten_pp
is None, then flatten_pp=flatten
.
True
Add legend to figure.
matplotlib Axes
or Bokeh Figure
, optional
A 2D array of locations into which to plot the densities. If not supplied, ArviZ will create its own array of plot areas (and return it).
str
, optional
Select plotting backend {“matplotlib”, “bokeh”}. Default “matplotlib”.
dict
, optional
Extra keyword arguments to control how reference is represented. Passed to matplotlib.axes.Axes.plot()
or matplotlib.axes.Axes.axhspan()
(when kind=u_value
and reference=analytical
).
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.
Specifies which InferenceData group should be plotted. If “posterior”, then the values in posterior_predictive
group are compared to the ones in observed_data
, if “prior” then the same comparison happens, but with the values in prior_predictive
group.
Call backend show function.
ndarray
of matplotlib Axes
or Bokeh Figure
See also
plot_ppc
Plot for posterior/prior predictive checks.
plot_loo_pit
Plot Leave-One-Out probability integral transformation (PIT) predictive checks.
plot_dist_comparison
Plot to compare fitted and unfitted distributions.
Notes
Discrete data is smoothed before computing either p-values or u-values using the function smooth_data()
if the data is integer type and the smoothing parameter is True.
References
Gelman et al. (2013) see http://www.stat.columbia.edu/~gelman/book/ pages 151-153 for details
Examples
Plot Bayesian p_values.
>>> import arviz as az >>> data = az.load_arviz_data("regression1d") >>> az.plot_bpv(data, kind="p_value")
Plot custom test statistic comparison.
>>> import arviz as az >>> data = az.load_arviz_data("regression1d") >>> az.plot_bpv(data, kind="t_stat", t_stat=lambda x:np.percentile(x, q=50, axis=-1))
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4