[][src]Struct statrs::distribution::Categorical

pub struct Categorical { /* fields omitted */ }

Implements the Categorical distribution, also known as the generalized Bernoulli or discrete distribution

Examples


use statrs::distribution::{Categorical, Discrete};
use statrs::statistics::Mean;
use statrs::prec;

let n = Categorical::new(&[0.0, 1.0, 2.0]).unwrap();
assert!(prec::almost_eq(n.mean(), 5.0 / 3.0, 1e-15));
assert_eq!(n.pmf(1), 1.0 / 3.0);

Methods

impl Categorical[src]

pub fn new(prob_mass: &[f64]) -> Result<Categorical>[src]

Constructs a new categorical distribution with the probabilities masses defined by prob_mass

Errors

Returns an error if prob_mass is empty, the sum of the elements in prob_mass is 0, or any element is less than 0 or is f64::NAN

Note

The elements in prob_mass do not need to be normalized

Examples

use statrs::distribution::Categorical;

let mut result = Categorical::new(&[0.0, 1.0, 2.0]);
assert!(result.is_ok());

result = Categorical::new(&[0.0, -1.0, 2.0]);
assert!(result.is_err());

Trait Implementations

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 InverseCDF<f64> for Categorical[src]

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

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

Panics

If x <= 0.0 or x >= 1.0

Formula

This example is not tested
i

where i is the first index such that x < f(i) and f(x) is defined as p_x + f(x - 1) and f(0) = p_0 where p_x is the xth probability mass

impl CheckedInverseCDF<f64> for Categorical[src]

fn checked_inverse_cdf(&self, x: f64) -> Result<f64>[src]

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

Errors

If x <= 0.0 or x >= 1.0

Formula

This example is not tested
i

where i is the first index such that x < f(i) and f(x) is defined as p_x + f(x - 1) and f(0) = p_0 where p_x is the xth probability mass

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

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

Calculates the probability mass function for the categorical distribution at x

Formula

This example is not tested
p_x

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

Calculates the log probability mass function for the categorical distribution at x

impl Min<u64> for Categorical[src]

fn min(&self) -> u64[src]

Returns the minimum value in the domain of the categorical distribution representable by a 64-bit integer

Formula

This example is not tested
0

impl Max<u64> for Categorical[src]

fn max(&self) -> u64[src]

Returns the maximum value in the domain of the categorical distribution representable by a 64-bit integer

Formula

This example is not tested
n

impl Mean<f64> for Categorical[src]

fn mean(&self) -> f64[src]

Returns the mean of the categorical distribution

Formula

This example is not tested
Σ(j * p_j)

where p_j is the jth probability mass, Σ is the sum from 0 to k - 1, and k is the number of categories

impl Variance<f64> for Categorical[src]

fn variance(&self) -> f64[src]

Returns the variance of the categorical distribution

Formula

This example is not tested
Σ(p_j * (j - μ)^2)

where p_j is the jth probability mass, μ is the mean, Σ is the sum from 0 to k - 1, and k is the number of categories

fn std_dev(&self) -> f64[src]

Returns the standard deviation of the categorical distribution

Formula

This example is not tested
sqrt(Σ(p_j * (j - μ)^2))

where p_j is the jth probability mass, μ is the mean, Σ is the sum from 0 to k - 1, and k is the number of categories

impl Entropy<f64> for Categorical[src]

fn entropy(&self) -> f64[src]

Returns the entropy of the categorical distribution

Formula

This example is not tested
-Σ(p_j * ln(p_j))

where p_j is the jth probability mass, Σ is the sum from 0 to k - 1, and k is the number of categories

impl Median<f64> for Categorical[src]

fn median(&self) -> f64[src]

Returns the median of the categorical distribution

Formula

This example is not tested
CDF^-1(0.5)

impl Clone for Categorical[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl PartialEq<Categorical> for Categorical[src]

impl Debug for Categorical[src]

impl Distribution<f64> for Categorical[src]

fn sample_iter<R>(&'a self, rng: &'a mut R) -> DistIter<'a, Self, R, T> where
    R: Rng
[src]

Create an iterator that generates random values of T, using rng as the source of randomness. Read more

Auto Trait Implementations

impl Send for Categorical

impl Sync for Categorical

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]