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

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]);

Methods

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> 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

This example is not tested
(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

This example is not tested
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<'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

This example is not tested
(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

This example is not tested
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 Mean<Vec<f64>> for Multinomial[src]

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

Returns the mean of the multinomial distribution

Formula

This example is not tested
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 Variance<Vec<f64>> for Multinomial[src]

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

Returns the variance of the multinomial distribution

Formula

This example is not tested
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

This example is not tested
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

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

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

Returns the skewness of the multinomial distribution

Formula

This example is not tested
(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 PartialEq<Multinomial> for Multinomial[src]

impl Clone for Multinomial[src]

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

Performs copy-assignment from source. Read more

impl Debug for Multinomial[src]

impl Distribution<Vec<f64>> for Multinomial[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 Multinomial

impl Sync for Multinomial

Blanket Implementations

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

type Owned = T

The resulting type after obtaining ownership.

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

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

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> BorrowMut<T> for T where
    T: ?Sized
[src]

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

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