mbdlyb.distributions ==================== .. py:module:: mbdlyb.distributions .. autoapi-nested-parse:: 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 ------- .. autoapisummary:: mbdlyb.distributions.BernoulliDistribution mbdlyb.distributions.BetaDistribution mbdlyb.distributions.ContinuousDistribution mbdlyb.distributions.DiscreteDistribution mbdlyb.distributions.DiscreteUniformDistribution mbdlyb.distributions.Distribution mbdlyb.distributions.NormalDistribution mbdlyb.distributions.UniformDistribution Module Contents --------------- .. py:class:: BernoulliDistribution(p: mbdlyb.formulae.T_FORMULA = None) Bases: :py:obj:`DiscreteDistribution` Bernoulli probability distribution. Models discrete binary random variables taking values 0 or 1 with specified probability of success. :ivar p: Probability of success (must be between 0 and 1). :vartype p: Formula .. py:attribute:: FORMULA_ATTRS .. py:attribute:: TYPE :value: 'Bernoulli' .. py:attribute:: p :type: mbdlyb.formulae.Formula .. py:class:: 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: :py:obj:`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. :ivar a: Alpha shape parameter. :vartype a: Formula :ivar b: Beta shape parameter. :vartype b: Formula :ivar loc: Location shift parameter. :vartype loc: Formula :ivar scale: Scale parameter. :vartype scale: Formula .. py:attribute:: FORMULA_ATTRS .. py:attribute:: TYPE :value: 'Beta' .. py:attribute:: a :type: mbdlyb.formulae.Formula .. py:attribute:: b :type: mbdlyb.formulae.Formula .. py:attribute:: loc :type: mbdlyb.formulae.Formula .. py:attribute:: scale :type: mbdlyb.formulae.Formula .. py:class:: ContinuousDistribution Bases: :py:obj:`Distribution` Base class for continuous probability distributions. Extends Distribution for continuous-valued random variables, implementing probability density functions and continuous CDFs. .. py:attribute:: TYPE :value: 'ContinuousDistribution' .. py:class:: DiscreteDistribution Bases: :py:obj:`Distribution` Base class for discrete probability distributions. Extends Distribution for discrete-valued random variables, implementing probability mass functions and discrete CDFs. .. py:attribute:: TYPE :value: 'DiscreteDistribution' .. py:class:: DiscreteUniformDistribution(low: mbdlyb.formulae.T_FORMULA = None, high: mbdlyb.formulae.T_FORMULA = None) Bases: :py:obj:`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. :ivar low: Lower bound (inclusive). :vartype low: Formula :ivar high: Upper bound (inclusive). :vartype high: Formula .. py:attribute:: FORMULA_ATTRS .. py:attribute:: TYPE :value: 'DiscreteUniform' .. py:attribute:: high :type: mbdlyb.formulae.Formula .. py:attribute:: low :type: mbdlyb.formulae.Formula .. py:class:: 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. :ivar TYPE: Identifier for distribution type (used in serialization). :vartype TYPE: str :ivar FORMULA_ATTRS: Names of attributes that are formulas. :vartype FORMULA_ATTRS: set[str] :ivar _PDF_FN: Probability density/mass function from scipy. :vartype _PDF_FN: Callable :ivar _CDF_FN: Cumulative distribution function from scipy. :vartype _CDF_FN: Callable .. py:method:: build_mapping(nodes: list[mbdlyb.MBDNode], overwrite: bool = False) -> dict[str, str] Build mapping of formula parameters to node references. :param nodes: The nodes in the model for resolving formulas. :type nodes: list[MBDNode] :param overwrite: Whether to overwrite existing mappings. :type overwrite: bool :returns: Mapping of parameter names to node FQN strings. :rtype: dict[str, str] .. py:method:: cdfs(values: numpy.ndarray, dependency_values: dict[str, float] = None) -> numpy.ndarray Get cumulative probabilities for multiple values. :param values: Array of values to evaluate. :type values: np.ndarray :param dependency_values: Optional values for formula parameters. :type dependency_values: dict[str, float] :returns: Array of cumulative probability values. :rtype: np.ndarray .. py:method:: from_json(s: Optional[Union[str, dict]]) -> Optional[Distribution] :classmethod: Deserialize a distribution from JSON format. :param s: JSON string or dict representation. :type s: Optional[Union[str, dict]] :returns: The deserialized distribution, or None if input is None. :rtype: Optional[Distribution] :raises KeyError: If 'type' field is missing or contains an invalid distribution type. .. py:method:: prob(v: float, dependency_values: dict[str, float] = None) -> float Get the probability density/mass at a specific value. :param v: The value to evaluate. :type v: float :param dependency_values: Optional values for formula parameters. :type dependency_values: dict[str, float] :returns: The probability density or mass. :rtype: float .. py:method:: probs(values: Union[list[float], numpy.array], dependency_values: dict[str, float] = None) -> numpy.ndarray Get probabilities for multiple values. :param values: Array of values to evaluate. :type values: Union[list[float], np.array] :param dependency_values: Optional values for formula parameters. :type dependency_values: dict[str, float] :returns: Array of probability values. :rtype: np.ndarray .. py:method:: to_json() -> str Serialize the distribution to JSON format. :returns: JSON string representation of the distribution and its parameters. :rtype: str .. py:attribute:: FORMULA_ATTRS :type: set[str] .. py:attribute:: TYPE :type: str :value: 'Distribution' .. py:class:: NormalDistribution(loc: mbdlyb.formulae.T_FORMULA = None, scale: mbdlyb.formulae.T_FORMULA = None) Bases: :py:obj:`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. :ivar loc: Mean of the distribution. :vartype loc: Formula :ivar scale: Standard deviation of the distribution. :vartype scale: Formula .. py:attribute:: FORMULA_ATTRS .. py:attribute:: TYPE :value: 'Normal' .. py:attribute:: loc :type: mbdlyb.formulae.Formula .. py:attribute:: scale :type: mbdlyb.formulae.Formula .. py:class:: UniformDistribution(loc: mbdlyb.formulae.T_FORMULA = None, scale: mbdlyb.formulae.T_FORMULA = None) Bases: :py:obj:`ContinuousDistribution` Continuous uniform probability distribution. Models continuous random variables uniformly distributed over an interval. All values within the interval are equally likely. :ivar loc: Lower bound of the interval. :vartype loc: Formula :ivar scale: Width of the interval. :vartype scale: Formula .. py:attribute:: FORMULA_ATTRS .. py:attribute:: TYPE :value: 'Uniform' .. py:attribute:: loc :type: mbdlyb.formulae.Formula .. py:attribute:: scale :type: mbdlyb.formulae.Formula