Struct statrs::distribution::Multinomial[][src]

pub struct Multinomial { /* fields omitted */ }

Implements the Multinomial distribution which is a generalization of the Binomial distribution

Examples

use statrs::distribution::Multinomial;
use statrs::statistics::Mean;

let n = Multinomial::new(&[0.3, 0.7], 5).unwrap();
assert_eq!(n.mean(), [1.5, 3.5]);

Implementations

impl Multinomial[src]

pub fn new(p: &[f64], n: u64) -> Result<Multinomial>[src]

Constructs a new multinomial distribution with probabilities p and n number of trials.

Errors

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

Note

The elements in p do not need to be normalized

Examples

use statrs::distribution::Multinomial;

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

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

pub fn p(&self) -> &[f64][src]

Returns the probabilities of the multinomial distribution as a slice

Examples

use statrs::distribution::Multinomial;

let n = Multinomial::new(&[0.0, 1.0, 2.0], 3).unwrap();
assert_eq!(n.p(), [0.0, 1.0, 2.0]);

pub fn n(&self) -> u64[src]

Returns the number of trials of the multinomial distribution

Examples

use statrs::distribution::Multinomial;

let n = Multinomial::new(&[0.0, 1.0, 2.0], 3).unwrap();
assert_eq!(n.n(), 3);

Trait Implementations

impl<'a> CheckedDiscrete<&'a [u64], f64> for Multinomial[src]

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

Calculates the probability mass function for the multinomial distribution with the given x’s corresponding to the probabilities for this distribution

Errors

If the elements in x do not sum to n or if the length of x is not equivalent to the length of p

Formula

(n! / x_1!...x_k!) * p_i^x_i for i in 1...k

where n is the number of trials, p_i is the ith probability, x_i is the ith x value, and k is the total number of probabilities

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

Calculates the log probability mass function for the multinomial distribution with the given x’s corresponding to the probabilities for this distribution

Errors

If the elements in x do not sum to n or if the length of x is not equivalent to the length of p

Formula

ln((n! / x_1!...x_k!) * p_i^x_i) for i in 1...k

where n is the number of trials, p_i is the ith probability, x_i is the ith x value, and k is the total number of probabilities

impl Clone for Multinomial[src]

impl Debug for Multinomial[src]

impl<'a> Discrete<&'a [u64], f64> for Multinomial[src]

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

Calculates the probability mass function for the multinomial distribution with the given x’s corresponding to the probabilities for this distribution

Panics

If the elements in x do not sum to n or if the length of x is not equivalent to the length of p

Formula

(n! / x_1!...x_k!) * p_i^x_i for i in 1...k

where n is the number of trials, p_i is the ith probability, x_i is the ith x value, and k is the total number of probabilities

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

Calculates the log probability mass function for the multinomial distribution with the given x’s corresponding to the probabilities for this distribution

Panics

If the elements in x do not sum to n or if the length of x is not equivalent to the length of p

Formula

ln((n! / x_1!...x_k!) * p_i^x_i) for i in 1...k

where n is the number of trials, p_i is the ith probability, x_i is the ith x value, and k is the total number of probabilities

impl Distribution<Vec<f64, Global>> for Multinomial[src]

impl Mean<Vec<f64, Global>> for Multinomial[src]

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

Returns the mean of the multinomial distribution

Formula

n * p_i for i in 1...k

where n is the number of trials, p_i is the ith probability, and k is the total number of probabilities

impl PartialEq<Multinomial> for Multinomial[src]

impl Skewness<Vec<f64, Global>> for Multinomial[src]

fn skewness(&self) -> Vec<f64>[src]

Returns the skewness of the multinomial distribution

Formula

(1 - 2 * p_i) / (n * p_i * (1 - p_i)) for i in 1...k

where n is the number of trials, p_i is the ith probability, and k is the total number of probabilities

impl StructuralPartialEq for Multinomial[src]

impl Variance<Vec<f64, Global>> for Multinomial[src]

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

Returns the variance of the multinomial distribution

Formula

n * p_i * (1 - p_1) for i in 1...k

where n is the number of trials, p_i is the ith probability, and k is the total number of probabilities

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

Returns the standard deviation of the multinomial distribution

Formula

sqrt(n * p_i * (1 - p_1)) for i in 1...k

where n is the number of trials, p_i is the ith probability, and k is the total number of probabilities

Auto Trait Implementations

impl RefUnwindSafe for Multinomial

impl Send for Multinomial

impl Sync for Multinomial

impl Unpin for Multinomial

impl UnwindSafe for Multinomial

Blanket Implementations

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

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

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

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

impl<T, U> Into<U> for T where
    U: From<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<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]