PosteriorSamples#

class zfit.mcmc.PosteriorSamples(samples, params, loss, sampler, n_warmup, n_samples, raw_result=None, info=None)[source]#

Bases: object

Posterior samples from MCMC bayesian inference.

Parameters:
  • samples (npt.NDArray[np.float64]) – Array of shape (n_samples, n_params) containing MCMC samples.

  • params (Iterable[ZfitParameter]) – List of ZfitParameter objects.

  • loss (ZfitLoss) – The ZfitLoss that was sampled.

  • sampler (MCMCSampler) – The ZfitSampler that generated the samples.

  • n_warmup (int) – Number of warmup/burn-in steps.

  • n_samples (int) – Number of posterior samples per walker.

  • raw_result (object | None) – Raw result from the sampler.

  • info (dict | None) – Additional information dictionary.

mean(params=None)[source]#

Posterior mean(s).

Parameters:

params (str | ZfitParameter | Iterable[str | ZfitParameter] | None) – Parameter name, object, index, or list thereof. If None, return all means.

Return type:

float | npt.NDArray[np.float64]

Returns:

Mean value(s). - Single parameter: returns float. - Collection of parameters: returns array.

symerr(params=None, *, sigma=None)[source]#

Symmetric error (standard deviation) of posterior samples.

Parameters:
  • params (str | ZfitParameter | Iterable[str | ZfitParameter] | None) – Parameter name, object, or index. If None, return all errors.

  • sigma (float | None) – Number of standard deviations. Default is 1. For example, sigma=1 returns 1 standard deviation, sigma=2 returns 2 standard deviations.

Return type:

float | npt.NDArray[np.float64]

Returns:

Symmetric error(s) as float or array.

std(params=None)[source]#

Standard deviation of posterior samples

Parameters:

params (str | ZfitParameter | Iterable[str | ZfitParameter] | None) – Parameter name, object, index, or list thereof. If None, return all stds.

Return type:

float | npt.NDArray[np.float64]

Returns:

Standard deviation(s). - Single parameter: returns float. - Collection of parameters: returns array.

Examples

>>> result.std()  # All parameters
array([0.102, 0.234])
>>> result.std(['mu', 'sigma'])  # Multiple parameters
array([0.102, 0.234])
>>> result.std('mu')  # Single parameter
0.102
>>> result.std(['mu'])  # Single parameter in list
array([0.102])
credible_interval(params=None, *, alpha=None, sigma=None)[source]#

Equal-tailed credible interval(s).

Parameters:
  • params (str | ZfitParameter | Iterable[str | ZfitParameter] | None) – Parameter name, object, index, or list thereof. If None, return all intervals.

  • alpha (float | None) – Significance level. Default is 0.05 for 95% interval.

  • sigma (float | None) – Number of standard deviations (e.g., 1 for ~68%, 2 for ~95%). Overrides alpha if given.

Return type:

tuple[float | npt.NDArray[np.float64], float | npt.NDArray[np.float64]]

Returns:

Tuple (lower, upper). - Single parameter: returns tuple of floats. - Collection of parameters: returns tuple of arrays.

get_samples(params=None)[source]#

Get posterior samples.

Parameters:

params (str | ZfitParameter | Iterable[str | ZfitParameter] | None) – Parameter name, object, index, or list thereof. If None, return all samples.

Return type:

npt.NDArray[np.float64]

Returns:

Array of samples. - Single parameter: returns 1D array. - Collection of parameters: returns 2D array with shape (n_samples, n_params).

as_prior(param)[source]#

Get posterior samples as a KDE prior for hierarchical modeling.

Parameters:

param (str | ZfitParameter | int) – Parameter name, object, or index to get posterior for.

Return type:

KDE

Returns:

KDE prior created from posterior samples.

to_arviz()[source]#

Convert to ArviZ InferenceData format.

Return type:

InferenceData

Returns:

ArviZ InferenceData object for advanced analysis.

update_params(params=None, *, what=None)[source]#

Set all parameters to their posterior mean values.

Return type:

PosteriorSamples

__enter__()[source]#

Context manager: set parameters to posterior means.

__exit__(exc_type, exc_val, exc_tb)[source]#

Context manager: restore original parameter values.

property params: list[ZfitParameter]#

Parameters used in the sampling.

property param_names: list[str]#

Names of the parameters used in the sampling.

property sampler: MCMCSampler#

Sampler used to generate samples.

property loss: ZfitLoss#

Loss function that was sampled.

property valid: bool#

Whether the MCMC results are valid (no NaN/inf values).

property converged: bool#

Whether the MCMC chains have converged based on diagnostics.

Convergence is determined by: - R-hat < 1.1 for all parameters (Gelman-Rubin statistic) - Effective sample size > 100 for all parameters - No NaN or infinite values

covariance(params=None)[source]#

Covariance matrix from posterior samples.

Parameters:

params (str | ZfitParameter | Iterable[str | ZfitParameter] | None) – Parameters to include. If None, use all parameters.

Return type:

npt.NDArray[np.float64]

Returns:

Covariance matrix as numpy array. - Single parameter: returns scalar (variance). - Collection of parameters: returns matrix.

summary(round_to=None)[source]#

Summary statistics using ArviZ when available.

Parameters:

round_to (int | None) – Number of decimals to round to. If None, no rounding.

Return type:

DataFrame

Returns:

ArviZ summary DataFrame.

__str__()[source]#

Nice string representation of posterior results.

Return type:

str

property rhat: ndarray[tuple[Any, ...], dtype[float64]] | None#

Gelman-Rubin R-hat convergence diagnostic.

Values < 1.1 indicate good convergence. Only available when multiple chains are used.

property ess: ndarray[tuple[Any, ...], dtype[float64]] | None#

Effective sample size for each parameter.

Accounts for autocorrelation in MCMC chains. Higher values indicate more independent samples.

convergence_summary()[source]#

Summary of convergence diagnostics.

Return type:

dict

diagnostics()[source]#

Comprehensive diagnostics report.

Return type:

dict

Returns:

Dictionary with all available diagnostics.