A simple Rust crate for handling probability distributions, primarily intended for use with Bayesian inference.
All probability density functions (PDFs) implement the [Density] trait, providing common operations like:
- Evaluation: Compute probability density (non-normalized) for a given sample point
- Sampling: Generate random samples according to the given distribution
- Domain queries: Checking valid input ranges
The Domain trait represents types that define the valid input space for a PDF.
A domain may be bounded, unbounded, or have a special structure.
Currently available domain types:
MDomain- Bounded multivariate domains (hypercubes)UDomain- Unbounded multivariate domainsSDomain- Univariate domains (for the use in univariate PDFs)
-
MultivariateDensityCombines multiple independent univariate distributions into a multivariate distribution. Use when the individual dimensions are statistically independent. -
MultiNormalDensityA multivariate normal distribution with arbitrary covariance. Use when modeling correlated multi-dimensional data. -
ParticleDensityA non-parametric density represented by weighted particles / samples. Use for complex distributions that can't be expressed analytically or for particle filters.
For the univariate case, one can use the following distributions directly:
ConstantDensity- A degenerate distribution at a fixed valueCosineDensity- Cosine distribution over the interval [-π/2, π/2]LogUniformDensity- Uniform distribution in log-space (for positive values)NormalDensity- Normal distributionUniformDensity- Uniform distribution over an interval