mbdlyb.distributions

Probability distribution classes for continuous and discrete variables.

Provides base classes and utilities for defining probability distributions used in MBD reasoning, with support for JSON serialization and formula parameters.

Classes

BernoulliDistribution

Bernoulli probability distribution.

BetaDistribution

Beta probability distribution.

ContinuousDistribution

Base class for continuous probability distributions.

DiscreteDistribution

Base class for discrete probability distributions.

DiscreteUniformDistribution

Discrete uniform probability distribution.

Distribution

Abstract base class for probability distributions.

NormalDistribution

Normal (Gaussian) probability distribution.

UniformDistribution

Continuous uniform probability distribution.

Module Contents

class mbdlyb.distributions.BernoulliDistribution(p: mbdlyb.formulae.T_FORMULA = None)

Bases: DiscreteDistribution

Bernoulli probability distribution.

Models discrete binary random variables taking values 0 or 1 with specified probability of success.

Variables:

p (Formula) – Probability of success (must be between 0 and 1).

FORMULA_ATTRS
TYPE = 'Bernoulli'
p: mbdlyb.formulae.Formula
class mbdlyb.distributions.BetaDistribution(a: mbdlyb.formulae.T_FORMULA = None, b: mbdlyb.formulae.T_FORMULA = None, loc: mbdlyb.formulae.T_FORMULA = None, scale: mbdlyb.formulae.T_FORMULA = None)

Bases: ContinuousDistribution

Beta probability distribution.

Models continuous random variables constrained to [0,1] interval, useful for modeling probabilities and proportions. Parameterized by shape parameters a and b, with optional location and scale transformation.

Variables:
  • a (Formula) – Alpha shape parameter.

  • b (Formula) – Beta shape parameter.

  • loc (Formula) – Location shift parameter.

  • scale (Formula) – Scale parameter.

FORMULA_ATTRS
TYPE = 'Beta'
a: mbdlyb.formulae.Formula
b: mbdlyb.formulae.Formula
loc: mbdlyb.formulae.Formula
scale: mbdlyb.formulae.Formula
class mbdlyb.distributions.ContinuousDistribution

Bases: Distribution

Base class for continuous probability distributions.

Extends Distribution for continuous-valued random variables, implementing probability density functions and continuous CDFs.

TYPE = 'ContinuousDistribution'
class mbdlyb.distributions.DiscreteDistribution

Bases: Distribution

Base class for discrete probability distributions.

Extends Distribution for discrete-valued random variables, implementing probability mass functions and discrete CDFs.

TYPE = 'DiscreteDistribution'
class mbdlyb.distributions.DiscreteUniformDistribution(low: mbdlyb.formulae.T_FORMULA = None, high: mbdlyb.formulae.T_FORMULA = None)

Bases: DiscreteDistribution

Discrete uniform probability distribution.

Models discrete random variables uniformly distributed over a range of integers. All integer values within the range are equally likely.

Variables:
  • low (Formula) – Lower bound (inclusive).

  • high (Formula) – Upper bound (inclusive).

FORMULA_ATTRS
TYPE = 'DiscreteUniform'
high: mbdlyb.formulae.Formula
low: mbdlyb.formulae.Formula
class mbdlyb.distributions.Distribution

Abstract base class for probability distributions.

Provides interface and utilities for probability distributions used in diagnostic reasoning. Distributions can have parameters that may be formulas dependent on other nodes, and support JSON serialization for persistence.

Variables:
  • TYPE (str) – Identifier for distribution type (used in serialization).

  • FORMULA_ATTRS (set[str]) – Names of attributes that are formulas.

  • _PDF_FN (Callable) – Probability density/mass function from scipy.

  • _CDF_FN (Callable) – Cumulative distribution function from scipy.

build_mapping(nodes: list[mbdlyb.MBDNode], overwrite: bool = False) → dict[str, str]

Build mapping of formula parameters to node references.

Parameters:
  • nodes (list[MBDNode]) – The nodes in the model for resolving formulas.

  • overwrite (bool) – Whether to overwrite existing mappings.

Returns:

Mapping of parameter names to node FQN strings.

Return type:

dict[str, str]

cdfs(values: numpy.ndarray, dependency_values: dict[str, float] = None) → numpy.ndarray

Get cumulative probabilities for multiple values.

Parameters:
  • values (np.ndarray) – Array of values to evaluate.

  • dependency_values (dict[str, float]) – Optional values for formula parameters.

Returns:

Array of cumulative probability values.

Return type:

np.ndarray

classmethod from_json(s: str | dict | None) → Distribution | None

Deserialize a distribution from JSON format.

Parameters:

s (Optional[Union[str, dict]]) – JSON string or dict representation.

Returns:

The deserialized distribution, or None if input is None.

Return type:

Optional[Distribution]

Raises:

KeyError – If ‘type’ field is missing or contains an invalid distribution type.

prob(v: float, dependency_values: dict[str, float] = None) → float

Get the probability density/mass at a specific value.

Parameters:
  • v (float) – The value to evaluate.

  • dependency_values (dict[str, float]) – Optional values for formula parameters.

Returns:

The probability density or mass.

Return type:

float

probs(values: list[float] | numpy.array, dependency_values: dict[str, float] = None) → numpy.ndarray

Get probabilities for multiple values.

Parameters:
  • values (Union[list[float], np.array]) – Array of values to evaluate.

  • dependency_values (dict[str, float]) – Optional values for formula parameters.

Returns:

Array of probability values.

Return type:

np.ndarray

to_json() → str

Serialize the distribution to JSON format.

Returns:

JSON string representation of the distribution and its parameters.

Return type:

str

FORMULA_ATTRS: set[str]
TYPE: str = 'Distribution'
class mbdlyb.distributions.NormalDistribution(loc: mbdlyb.formulae.T_FORMULA = None, scale: mbdlyb.formulae.T_FORMULA = None)

Bases: ContinuousDistribution

Normal (Gaussian) probability distribution.

Models continuous random variables with the normal distribution specified by mean (loc) and standard deviation (scale) parameters. Both parameters can be formulas dependent on other model variables.

Variables:
  • loc (Formula) – Mean of the distribution.

  • scale (Formula) – Standard deviation of the distribution.

FORMULA_ATTRS
TYPE = 'Normal'
loc: mbdlyb.formulae.Formula
scale: mbdlyb.formulae.Formula
class mbdlyb.distributions.UniformDistribution(loc: mbdlyb.formulae.T_FORMULA = None, scale: mbdlyb.formulae.T_FORMULA = None)

Bases: ContinuousDistribution

Continuous uniform probability distribution.

Models continuous random variables uniformly distributed over an interval. All values within the interval are equally likely.

Variables:
  • loc (Formula) – Lower bound of the interval.

  • scale (Formula) – Width of the interval.

FORMULA_ATTRS
TYPE = 'Uniform'
loc: mbdlyb.formulae.Formula
scale: mbdlyb.formulae.Formula