Crate statrs

Source
Expand description

This crate aims to be a functional port of the Math.NET Numerics Distribution package and in doing so providing the Rust numerical computing community with a robust, well-tested statistical distribution package. This crate also ports over some of the special statistical functions from Math.NET in so far as they are used in the computation of distribution values. This crate depends on the rand crate to provide RNG.

§Sampling

The common use case is to set up the distributions and sample from them which depends on the Rand crate for random number generation.

use statrs::distribution::Exp;
use rand::distributions::Distribution;
let mut r = rand::rngs::OsRng;
let n = Exp::new(0.5).unwrap();
print!("{}", n.sample(&mut r));

§Introspecting distributions

Statrs also comes with a number of useful utility traits for more detailed introspection of distributions.

use statrs::distribution::{Exp, Continuous, ContinuousCDF}; // `cdf` and `pdf`
use statrs::statistics::Distribution; // statistical moments and entropy

let n = Exp::new(1.0).unwrap();
assert_eq!(n.mean(), Some(1.0));
assert_eq!(n.variance(), Some(1.0));
assert_eq!(n.entropy(), Some(1.0));
assert_eq!(n.skewness(), Some(2.0));
assert_eq!(n.cdf(1.0), 0.6321205588285576784045);
assert_eq!(n.pdf(1.0), 0.3678794411714423215955);

§Utility functions

as well as utility functions including erf, gamma, ln_gamma, beta, etc.

use statrs::distribution::FisherSnedecor;
use statrs::statistics::Distribution;

let n = FisherSnedecor::new(1.0, 1.0).unwrap();
assert!(n.variance().is_none());

§Distributions implemented

Statrs comes with a number of commonly used distributions including Normal, Gamma, Student’s T, Exponential, Weibull, etc. view all implemented in distributions module.

Modules§

consts
Defines mathematical expressions commonly used when computing distribution values as constants
distribution
Defines common interfaces for interacting with statistical distributions and provides concrete implementations for a variety of distributions.
euclid
Provides number theory utility functions
function
Provides a host of special statistical functions (e.g. the beta function or the error function)
generate
Provides utility functions for generating data sequences
prec
Provides utility functions for working with floating point precision
statistics
Provides traits for statistical computation
stats_tests

Macros§

assert_almost_eq