mixle.stats.univariate.discrete.binomial module¶
Create, estimate, and sample from the binomial distribution.
Defines the BinomialDistribution, BinomialSampler, BinomialAccumulatorFactory, BinomialAccumulator, BinomialEstimator, and the BinomialDataEncoder classes for use with mixle.
Data type: int.
Reference: Johnson, Kemp & Kotz, Univariate Discrete Distributions (3rd ed., Wiley, 2005).
- class BinomialDistribution(p, n, min_val=None, name=None, keys=None, prior=None)[source]
Bases:
SequenceEncodableProbabilityDistributionBinomial distribution over
min_val + {0, ..., n}with success probabilityp.- Parameters:
- classmethod compute_capabilities()[source]
- classmethod compute_declaration()[source]
- static exp_family_sufficient_statistics(x, engine)[source]
Return Binomial sufficient statistics from encoded observations.
The parameter-dependent support shift is handled by
exp_family_sufficient_statistics_from_paramswhen generated scoring supplies the declaration-stacked parameter bundle.
- static exp_family_sufficient_statistics_from_params(x, params, engine)[source]
Return Binomial sufficient statistics for generated scoring.
- static exp_family_natural_parameters(params, engine)[source]
Return Binomial natural parameters for generated scoring.
- static exp_family_log_partition(params, engine)[source]
Return Binomial log partition for generated scoring.
- static exp_family_base_measure(x, engine)[source]
Return the observation-only Binomial base measure.
- static exp_family_base_measure_from_params(x, params, engine)[source]
Return Binomial support/base measure for generated scoring.
- set_prior(prior)[source]
Attach a Beta parameter prior and precompute conjugate-prior expectations.
With a Beta(a, b) prior on the success probability
pthis caches(E[log p], E[log(1-p)]) = (digamma(a) - digamma(a+b), digamma(b) - digamma(a+b))so thatexpected_log_densityevaluates the variational Bayes expectationE_q[log p(x | p)]. Any other prior (includingNone) leaves the distribution a plain point model.- Parameters:
prior (SequenceEncodableProbabilityDistribution | None)
- Return type:
None
- expected_log_density(x)[source]
Variational expectation
E_q[log p(x | p)]under the Beta prior.Uses the cached digamma expectations of
log pandlog(1-p); falls back to the plug-inlog_density(x)when no conjugate prior is attached.
- seq_expected_log_density(x)[source]
Vectorized
expected_log_densityover sequence-encoded observations.
- density(x)[source]
Returns the probability mass of integer value x.
If x is not an integer between [0,n) or [min_val, n-1-min_val), density is 0.0.
- log_density(x)[source]
Returns the log-probability mass of integer value x.
If x is not an integer between [0,n) or [min_val, n-1-min_val), log-density is -inf.
- seq_log_density(x)[source]
Vectorized evaluation of log-density for sequence encoded data.
Input value x must be obtained from a call to BinomialDataEncoder.seq_encode(data). Returns numpy array of log-density evaluated at all observations contained in encoded data x.
- static backend_log_density_from_params(vals, n, p, min_val, engine)[source]
Engine-neutral binomial log-density from explicit parameters.
- backend_seq_log_density(x, engine)[source]
Engine-neutral vectorized log-density for encoded data.
- classmethod backend_stacked_params(dists, engine)[source]
Return stacked binomial parameters for a homogeneous mixture kernel.
A stacked binomial mixture requires components to share the same trial count and shifted support. Mixtures with heterogeneous supports fall back to the generic kernel.
- classmethod backend_stacked_log_density(x, params, engine)[source]
Return an
(n, k)matrix of binomial log densities.
- classmethod backend_stacked_sufficient_statistics_with_estimator(x, weights, params, engine, estimator)[source]
Return stacked Binomial sufficient statistics using estimator-owned support bounds.
- to_fisher(**kwargs)[source]
Return the Binomial’s count-family Fisher view.
- cdf(x)[source]
Cumulative distribution function P(X <= x) over min_val + {0..n}.
- quantile(q)[source]
Inverse CDF F^{-1}(q) over min_val + {0..n} (via scipy binom).
- sampler(seed=None)[source]
Returns BinomialSampler for generating samples from BinomialDistribution(n,p,min_val).
- Parameters:
Optional[int] (seed) – Used to set seed on random number generator for sampling.
seed (int | None)
- Returns:
BinomialSampler for BinomialDistribution with seed.
- Return type:
BinomialSampler
- estimator(pseudo_count=None)[source]
Creates a BinomialEstimator for estimating parameters of BinomialDistribution.
- Parameters:
pseudo_count (Optional[float]) – If set, inflates counts for currently set sufficient statistic (p).
- Returns:
BinomialEstimator object.
- Return type:
BinomialEstimator
- dist_to_encoder()[source]
Creates a BinomialDataEncoder object for seqeunce encoding data.
- Returns:
BinomialDataEncoder object.
- Return type:
BinomialDataEncoder
- enumerator()[source]
Returns BinomialEnumerator iterating the support in descending probability order.
- Return type:
BinomialEnumerator
- quantized_index(max_bits, bin_width_bits=1.0)[source]
Build a bounded bit-quantized index by walking the binomial mode outward.
- class BinomialEnumerator(dist)[source]
Bases:
DistributionEnumerator- Parameters:
dist (BinomialDistribution)
- class BinomialSampler(dist, seed=None)[source]
Bases:
DistributionSampler- Parameters:
dist (BinomialDistribution)
seed (int | None)
- sample(size=None)[source]
Draw samples from BinomialSampler.
- class BinomialAccumulator(max_val=None, min_val=None, name=None, keys=None)[source]
Bases:
SequenceEncodableStatisticAccumulator- update(x, weight, estimate)[source]
Accumulates Binomial sufficient statistics for weighted single observation.
Add x*weight to attribute sum, and increase the count by weight.
- initialize(x, weight, rng)[source]
Initialize BinomialAccumulator sufficient statistics for one weighted observation.
- seq_update(x, weights, estimate)[source]
Accumulates Binomial sufficient statistics for encoded sequence.
- Parameters:
x (E) – Encoded sequence of observations.
weights (np.ndarray) – Numpy array of floats for weighting each observation.
estimate (Optional[BinomialDistribution]) – Previous estimate of BinomialDistribution obtained from prior data.:
- Returns:
None
- Return type:
None
- seq_update_engine(x, weights, estimate, engine)[source]
Engine-resident accumulation of count/sum statistics (numpy or torch).
The weighted sum and count reductions run on the active engine; the scalar min/max support bounds remain host bookkeeping. Matches seq_update.
- seq_initialize(x, weights, rng)[source]
Vectorized initialization of BinomialAccumulator sufficient statistics with weights.
Calls seq_update().
- Parameters:
x (E) – Encoded sequence of observations.
weights (np.ndarray) – Numpy array of floats for weighting each observation.
rng (Optional[RandomState]) – RandomState not needed. No randomness in initialization.
- Returns:
None
- Return type:
None
- combine(suff_stat)[source]
Combine the sufficient statistics of BinomialAccumulator with suff_stat.
- value()[source]
Returns the sufficient statistics, and member variables min_val and max_val.
- from_value(x)[source]
Set BinomialAccumulator suff stats and member variables from suff_stat tuple defined in value().
Takes tuple of (count, sum, min_val, max_val) for setting values of BinomialAccumulator.
- scale(c)[source]
Scale linear count/sum statistics while preserving support bounds.
- Parameters:
c (float)
- Return type:
BinomialAccumulator
- key_merge(stats_dict)[source]
Combines the sufficient statistics of BinomialAccumulators that have the same key value.
- Parameters:
stats_dict (Dict[str, Any]) – Dictionary for mapping keys to BinomialAccumulators.
- Returns:
None
- Return type:
None
- key_replace(stats_dict)[source]
Set sufficient statistics of object instance to matching instances with matching keys.
- Parameters:
stats_dict (Dict[str, Any]) – Maps member variable key to BinomialAccumualator with same key.
- Returns:
None
- Return type:
None
- acc_to_encoder()[source]
Create BinomialDataEncoder object for encoding data.
Note: Used for seq_initialize.
- Returns:
BinomialDataEncoder()
- Return type:
BinomialDataEncoder
- class BinomialAccumulatorFactory(max_val=None, min_val=0, name=None, keys=None)[source]
Bases:
StatisticAccumulatorFactory- make()[source]
Creates a BinomialAccumulator object.
- Returns:
BinomialAccumulator.
- Return type:
BinomialAccumulator
- class BinomialEstimator(max_val=None, min_val=0, pseudo_count=None, suff_stat=None, name=None, keys=None, prior=None)[source]
Bases:
ParameterEstimator- Parameters:
- accumulator_factory()[source]
Creates a BinomialAccumulatorFactory object from member varaibles.
- Returns:
BinomialAccumulatorFactory
- Return type:
BinomialAccumulatorFactory
- model_log_density(model)[source]
Log-density of the model’s success probability under the Beta prior (ELBO global term).
- Parameters:
model (BinomialDistribution)
- Return type:
- estimate(nobs, suff_stat)[source]
Estimate a BinomialDistribution from BinomialEstimator using sufficient statistics in suff_stat.
Note: nobs is not used here. Kept for consistency with other ParameterEstimators.
Memeber variable suff_stat is simply the proportion (p) of the BinomialDistributon passed to BinomalEstimator. The pseudo_count is used to inflate (p) in estimation.