[][src]Trait statrs::distribution::Univariate

pub trait Univariate<T, K>: Min<T> + Max<T> {
    fn cdf(&self, x: K) -> K;
}

The Univariate trait is used to specify an interface for univariate distributions e.g. distributions that have a closed form cumulative distribution function

Required methods

fn cdf(&self, x: K) -> K

Returns the cumulative distribution function calculated at x for a given distribution. May panic depending on the implementor.

Examples

use statrs::distribution::{Univariate, Uniform};

let n = Uniform::new(0.0, 1.0).unwrap();
assert_eq!(0.5, n.cdf(0.5));
Loading content...

Implementors

impl Univariate<f64, f64> for Beta[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the beta distribution at x

Formula

This example is not tested
I_x(α, β)

where α is shapeA, β is shapeB, and I_x is the regularized lower incomplete beta function

impl Univariate<f64, f64> for Cauchy[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the cauchy distribution at x

Formula

This example is not tested
(1 / π) * arctan((x - x_0) / γ) + 0.5

where x_0 is the location and γ is the scale

impl Univariate<f64, f64> for Chi[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the chi distribution at x.

Formula

This example is not tested
P(k / 2, x^2 / 2)

where k is the degrees of freedom and P is the regularized Gamma function

impl Univariate<f64, f64> for ChiSquared[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the chi-squared distribution at x

Formula

This example is not tested
(1 / Γ(k / 2)) * γ(k / 2, x / 2)

where k is the degrees of freedom, Γ is the gamma function, and γ is the lower incomplete gamma function

impl Univariate<f64, f64> for Erlang[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the erlang distribution at x

Formula

This example is not tested
γ(k, λx)  (k - 1)!

where k is the shape, λ is the rate, and γ is the lower incomplete gamma function

impl Univariate<f64, f64> for Exponential[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the exponential distribution at x

Formula

This example is not tested
1 - e^(-λ * x)

where λ is the rate

impl Univariate<f64, f64> for FisherSnedecor[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the fisher-snedecor distribution at x

Formula

This example is not tested
I_((d1 * x) / (d1 * x + d2))(d1 / 2, d2 / 2)

where d1 is the first degree of freedom, d2 is the second degree of freedom, and I is the regularized incomplete beta function

impl Univariate<f64, f64> for Gamma[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the gamma distribution at x

Formula

This example is not tested
(1 / Γ(α)) * γ(α, β * x)

where α is the shape, β is the rate, Γ is the gamma function, and γ is the lower incomplete gamma function

impl Univariate<f64, f64> for InverseGamma[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the inverse gamma distribution at x

Formula

This example is not tested
Γ(α, β / x) / Γ(α)

where the numerator is the upper incomplete gamma function, the denominator is the gamma function, α is the shape, and β is the rate

impl Univariate<f64, f64> for LogNormal[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the log-normal distribution at x

Formula

This example is not tested
(1 / 2) + (1 / 2) * erf((ln(x) - μ) / sqrt(2) * σ)

where μ is the location, σ is the scale, and erf is the error function

impl Univariate<f64, f64> for Normal[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the normal distribution at x

Formula

This example is not tested
(1 / 2) * (1 + erf((x - μ) / (σ * sqrt(2))))

where μ is the mean, σ is the standard deviation, and erf is the error function

impl Univariate<f64, f64> for Pareto[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the Pareto distribution at x

Formula

This example is not tested
if x < x_m {
    0
} else {
    1 - (x_m/x)^α
}

where x_m is the scale and α is the shape

impl Univariate<f64, f64> for StudentsT[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the student's t-distribution at x

Formula

This example is not tested
if x < μ {
    (1 / 2) * I(t, v / 2, 1 / 2)
} else {
    1 - (1 / 2) * I(t, v / 2, 1 / 2)
}

where t = v / (v + k^2), k = (x - μ) / σ, μ is the location, σ is the scale, v is the freedom, and I is the regularized incomplete beta function

impl Univariate<f64, f64> for Triangular[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the triangular distribution at x

Formula

This example is not tested
if x == min {
    0
} if min < x <= mode {
    (x - min)^2 / ((max - min) * (mode - min))
} else if mode < x < max {
    1 - (max - min)^2 / ((max - min) * (max - mode))
} else {
    1
}

impl Univariate<f64, f64> for Uniform[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the uniform distribution at x

Formula

This example is not tested
(x - min) / (max - min)

impl Univariate<f64, f64> for Weibull[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the weibull distribution at x

Formula

This example is not tested
1 - e^-((x/λ)^k)

where k is the shape and λ is the scale

impl Univariate<i64, f64> for DiscreteUniform[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the discrete uniform distribution at x

Formula

This example is not tested
(floor(x) - min + 1) / (max - min + 1)

impl Univariate<u64, f64> for Bernoulli[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the bernoulli distribution at x.

Formula

This example is not tested
if x < 0 { 0 }
else if x >= 1 { 1 }
else { 1 - p }

impl Univariate<u64, f64> for Binomial[src]

fn cdf(&self, x: f64) -> f64[src]

Calulcates the cumulative distribution function for the binomial distribution at x

Formula

This example is not tested
I_(1 - p)(n - x, 1 + x)

where I_(x)(a, b) is the regularized incomplete beta function

impl Univariate<u64, f64> for Categorical[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the categorical distribution at x

Formula

This example is not tested
sum(p_j) from 0..x

where p_j is the probability mass for the jth category

impl Univariate<u64, f64> for Geometric[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the geometric distribution at x

Formula

This example is not tested
1 - (1 - p) ^ (x + 1)

impl Univariate<u64, f64> for Hypergeometric[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the hypergeometric distribution at x

Formula

This example is not tested
1 - ((n choose k+1) * (N-n choose K-k-1)) / (N choose K) * 3_F_2(1,
k+1-K, k+1-n; k+2, N+k+2-K-n; 1)

and p_F_q is the [generalized hypergeometric function](https://en.wikipedia. org/wiki/Generalized_hypergeometric_function)

impl Univariate<u64, f64> for Poisson[src]

fn cdf(&self, x: f64) -> f64[src]

Calculates the cumulative distribution function for the poisson distribution at x

Formula

This example is not tested
1 - P(x + 1, λ)

where λ is the rate and P is the lower regularized gamma function

Loading content...