pub struct Multinomial<D>{ /* private fields */ }
Expand description
Implements the Multinomial distribution which is a generalization of the Binomial distribution
§Examples
use statrs::distribution::Multinomial;
use statrs::statistics::MeanN;
use nalgebra::vector;
let n = Multinomial::new_from_nalgebra(vector![0.3, 0.7], 5).unwrap();
assert_eq!(n.mean().unwrap(), (vector![1.5, 3.5]));
Implementations§
Source§impl Multinomial<Dyn>
impl Multinomial<Dyn>
Sourcepub fn new(p: Vec<f64>, n: u64) -> Result<Self, MultinomialError>
pub fn new(p: Vec<f64>, n: u64) -> Result<Self, MultinomialError>
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(vec![0.0, 1.0, 2.0], 3);
assert!(result.is_ok());
result = Multinomial::new(vec![0.0, -1.0, 2.0], 3);
assert!(result.is_err());
Source§impl<D> Multinomial<D>
impl<D> Multinomial<D>
pub fn new_from_nalgebra( p: OVector<f64, D>, n: u64, ) -> Result<Self, MultinomialError>
Trait Implementations§
Source§impl<D> Clone for Multinomial<D>
impl<D> Clone for Multinomial<D>
Source§fn clone(&self) -> Multinomial<D>
fn clone(&self) -> Multinomial<D>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<D> Debug for Multinomial<D>
impl<D> Debug for Multinomial<D>
Source§impl<D> Discrete<&Matrix<u64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<u64>>, f64> for Multinomial<D>
impl<D> Discrete<&Matrix<u64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<u64>>, f64> for Multinomial<D>
Source§fn pmf(&self, x: &OVector<u64, D>) -> f64
fn pmf(&self, x: &OVector<u64, D>) -> f64
Calculates the probability mass function for the multinomial
distribution
with the given x
’s corresponding to the probabilities for this
distribution
§Panics
If length of x
is not equal to 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 i
th probability,
x_i
is the i
th x
value, and k
is the total number of
probabilities
Source§fn ln_pmf(&self, x: &OVector<u64, D>) -> f64
fn ln_pmf(&self, x: &OVector<u64, D>) -> f64
Calculates the log probability mass function for the multinomial
distribution
with the given x
’s corresponding to the probabilities for this
distribution
§Panics
If length of x
is not equal to 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 i
th probability,
x_i
is the i
th x
value, and k
is the total number of
probabilities
Source§impl<D> Display for Multinomial<D>
impl<D> Display for Multinomial<D>
Source§impl<D> Distribution<Matrix<f64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<f64>>> for Multinomial<D>
impl<D> Distribution<Matrix<f64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<f64>>> for Multinomial<D>
Source§fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> OVector<f64, D>
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> OVector<f64, D>
T
, using rng
as the source of randomness.Source§fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
T
, using rng
as
the source of randomness. Read moreSource§impl<D> Distribution<Matrix<u64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<u64>>> for Multinomial<D>
impl<D> Distribution<Matrix<u64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<u64>>> for Multinomial<D>
Source§fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> OVector<u64, D>
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> OVector<u64, D>
T
, using rng
as the source of randomness.Source§fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
T
, using rng
as
the source of randomness. Read moreSource§impl<D> MeanN<Matrix<f64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<f64>>> for Multinomial<D>
impl<D> MeanN<Matrix<f64, D, Const<1>, <DefaultAllocator as Allocator<D>>::Buffer<f64>>> for Multinomial<D>
Source§impl<D> PartialEq for Multinomial<D>
impl<D> PartialEq for Multinomial<D>
Source§impl<D> VarianceN<Matrix<f64, D, D, <DefaultAllocator as Allocator<D, D>>::Buffer<f64>>> for Multinomial<D>
impl<D> VarianceN<Matrix<f64, D, D, <DefaultAllocator as Allocator<D, D>>::Buffer<f64>>> for Multinomial<D>
impl<D> StructuralPartialEq for Multinomial<D>
Auto Trait Implementations§
impl<D> !Freeze for Multinomial<D>
impl<D> !RefUnwindSafe for Multinomial<D>
impl<D> !Send for Multinomial<D>
impl<D> !Sync for Multinomial<D>
impl<D> !Unpin for Multinomial<D>
impl<D> !UnwindSafe for Multinomial<D>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.