[][src]Struct rv::dist::Poisson

pub struct Poisson { /* fields omitted */ }

Possion distribution over x in {0, 1, ... }.

Example

use rv::prelude::*;

// Create Poisson(λ=5.3)
let pois = Poisson::new(5.3).unwrap();

// CDF at 5
assert!((pois.cdf(&5_u16) - 0.56347339228807169).abs() < 1E-12);

// Draw 100 samples
let mut rng = rand::thread_rng();
let xs: Vec<u32> = pois.sample(100, &mut rng);
assert_eq!(xs.len(), 100)

The Poisson can have two modes. The modes are distinct only if the rate is an integer.

{
    let pois = Poisson::new(2.0).unwrap();
    let modes: (u32, u32) = pois.mode().unwrap();

    assert_eq!(modes, (1, 2))
}

{
    let pois = Poisson::new(2.1).unwrap();
    let modes: (u32, u32) = pois.mode().unwrap();

    assert_eq!(modes, (2, 2))
}

If we know that the rate is not an integer, or we only care about one of the modes, we can call mode for an unsigned type, which will return the leftmost (lowest) mode.

let pois = Poisson::new(2.1).unwrap();
let mode: u32 = pois.mode().unwrap();

assert_eq!(mode, 2)

Implementations

impl Poisson[src]

pub fn new(rate: f64) -> Result<Self, PoissonError>[src]

Create a new Poisson distribution with given rate

pub fn new_unchecked(rate: f64) -> Self[src]

Creates a new Poisson without checking whether the parameter is valid.

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

Get the rate parameter

Example

let pois = Poisson::new(2.0).unwrap();
assert_eq!(pois.rate(), 2.0);

pub fn set_rate(&mut self, rate: f64) -> Result<(), PoissonError>[src]

Set the rate parameter

Example

use rv::dist::Poisson;
let mut pois = Poisson::new(1.0).unwrap();
assert_eq!(pois.rate(), 1.0);

pois.set_rate(1.1).unwrap();
assert_eq!(pois.rate(), 1.1);

Will error for invalid values

assert!(pois.set_rate(1.1).is_ok());
assert!(pois.set_rate(0.0).is_err());
assert!(pois.set_rate(-1.0).is_err());
assert!(pois.set_rate(std::f64::INFINITY).is_err());
assert!(pois.set_rate(std::f64::NEG_INFINITY).is_err());
assert!(pois.set_rate(std::f64::NAN).is_err());

pub fn set_rate_unchecked(&mut self, rate: f64)[src]

Set the rate parameter without input validation

Trait Implementations

impl Cdf<u16> for Poisson[src]

impl Cdf<u32> for Poisson[src]

impl Cdf<u8> for Poisson[src]

impl Clone for Poisson[src]

impl ConjugatePrior<u16, Poisson> for Gamma[src]

type Posterior = Self

impl ConjugatePrior<u32, Poisson> for Gamma[src]

type Posterior = Self

impl ConjugatePrior<u8, Poisson> for Gamma[src]

type Posterior = Self

impl ContinuousDistr<Poisson> for Gamma[src]

impl Debug for Poisson[src]

impl DiscreteDistr<u16> for Poisson[src]

impl DiscreteDistr<u32> for Poisson[src]

impl DiscreteDistr<u8> for Poisson[src]

impl Display for Poisson[src]

impl Entropy for Poisson[src]

impl<'_> From<&'_ Poisson> for String[src]

impl HasSuffStat<u16> for Poisson[src]

type Stat = PoissonSuffStat

impl HasSuffStat<u32> for Poisson[src]

type Stat = PoissonSuffStat

impl HasSuffStat<u8> for Poisson[src]

type Stat = PoissonSuffStat

impl KlDivergence for Poisson[src]

impl Kurtosis for Poisson[src]

impl Mean<f64> for Poisson[src]

impl Mode<(u16, u16)> for Poisson[src]

impl Mode<(u32, u32)> for Poisson[src]

impl Mode<(u8, u8)> for Poisson[src]

impl Mode<u16> for Poisson[src]

impl Mode<u32> for Poisson[src]

impl Mode<u8> for Poisson[src]

impl PartialEq<Poisson> for Poisson[src]

impl Rv<Poisson> for Gamma[src]

impl Rv<u16> for Poisson[src]

impl Rv<u32> for Poisson[src]

impl Rv<u8> for Poisson[src]

impl Skewness for Poisson[src]

impl Support<Poisson> for Gamma[src]

impl Support<u16> for Poisson[src]

impl Support<u32> for Poisson[src]

impl Support<u8> for Poisson[src]

impl Variance<f64> for Poisson[src]

Auto Trait Implementations

impl RefUnwindSafe for Poisson

impl Send for Poisson

impl Sync for Poisson

impl Unpin for Poisson

impl UnwindSafe for Poisson

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<Fx, X> Cdf<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Cdf<X>, 
[src]

impl<Fx, X> DiscreteDistr<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: DiscreteDistr<X>, 
[src]

impl<Fx> Entropy for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Entropy
[src]

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

impl<Fx, X> HasSuffStat<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: HasSuffStat<X>, 
[src]

type Stat = <<Fx as Deref>::Target as HasSuffStat<X>>::Stat

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

impl<Fx> KlDivergence for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: KlDivergence
[src]

impl<Fx> Kurtosis for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Kurtosis
[src]

impl<Fx, X> Mean<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Mean<X>, 
[src]

impl<Fx, X> Mode<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Mode<X>, 
[src]

impl<Fx, X> Rv<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Rv<X>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<Fx> Skewness for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Skewness
[src]

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 

impl<Fx, X> Support<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Support<X>, 
[src]

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

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[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<V, T> VZip<V> for T where
    V: MultiLane<T>, 

impl<Fx, X> Variance<X> for Fx where
    Fx: Deref,
    <Fx as Deref>::Target: Variance<X>, 
[src]