[−][src]Struct rv::dist::Poisson
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]
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]
fn clone(&self) -> Self
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl ConjugatePrior<u16, Poisson> for Gamma
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<u16, Poisson>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<u16, Poisson>) -> f64
[src]
fn ln_pp(&self, y: &u16, x: &DataOrSuffStat<u16, Poisson>) -> f64
[src]
fn m(&self, x: &DataOrSuffStat<X, Fx>) -> f64
[src]
fn pp(&self, y: &X, x: &DataOrSuffStat<X, Fx>) -> f64
[src]
impl ConjugatePrior<u32, Poisson> for Gamma
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<u32, Poisson>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<u32, Poisson>) -> f64
[src]
fn ln_pp(&self, y: &u32, x: &DataOrSuffStat<u32, Poisson>) -> f64
[src]
fn m(&self, x: &DataOrSuffStat<X, Fx>) -> f64
[src]
fn pp(&self, y: &X, x: &DataOrSuffStat<X, Fx>) -> f64
[src]
impl ConjugatePrior<u8, Poisson> for Gamma
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<u8, Poisson>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<u8, Poisson>) -> f64
[src]
fn ln_pp(&self, y: &u8, x: &DataOrSuffStat<u8, Poisson>) -> f64
[src]
fn m(&self, x: &DataOrSuffStat<X, Fx>) -> f64
[src]
fn pp(&self, y: &X, x: &DataOrSuffStat<X, Fx>) -> f64
[src]
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
fn empty_suffstat(&self) -> Self::Stat
[src]
impl HasSuffStat<u32> for Poisson
[src]
type Stat = PoissonSuffStat
fn empty_suffstat(&self) -> Self::Stat
[src]
impl HasSuffStat<u8> for Poisson
[src]
type Stat = PoissonSuffStat
fn empty_suffstat(&self) -> Self::Stat
[src]
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]
fn ln_f(&self, x: &Poisson) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> Poisson
[src]
fn f(&self, x: &X) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<X>
[src]
fn sample_stream<'r, R: Rng>(
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
[src]
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
impl Rv<u16> for Poisson
[src]
fn ln_f(&self, x: &u16) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u16
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u16>
[src]
fn f(&self, x: &X) -> f64
[src]
fn sample_stream<'r, R: Rng>(
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
[src]
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
impl Rv<u32> for Poisson
[src]
fn ln_f(&self, x: &u32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u32>
[src]
fn f(&self, x: &X) -> f64
[src]
fn sample_stream<'r, R: Rng>(
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
[src]
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
impl Rv<u8> for Poisson
[src]
fn ln_f(&self, x: &u8) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u8
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u8>
[src]
fn f(&self, x: &X) -> f64
[src]
fn sample_stream<'r, R: Rng>(
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
[src]
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<Fx, X> Cdf<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: Cdf<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: Cdf<X>,
impl<Fx, X> DiscreteDistr<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: DiscreteDistr<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: DiscreteDistr<X>,
impl<Fx> Entropy for Fx where
Fx: Deref,
<Fx as Deref>::Target: Entropy,
[src]
Fx: Deref,
<Fx as Deref>::Target: Entropy,
impl<T> From<T> for T
[src]
impl<Fx, X> HasSuffStat<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: HasSuffStat<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: HasSuffStat<X>,
type Stat = <<Fx as Deref>::Target as HasSuffStat<X>>::Stat
fn empty_suffstat(&Self) -> <Fx as HasSuffStat<X>>::Stat
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<Fx> KlDivergence for Fx where
Fx: Deref,
<Fx as Deref>::Target: KlDivergence,
[src]
Fx: Deref,
<Fx as Deref>::Target: KlDivergence,
impl<Fx> Kurtosis for Fx where
Fx: Deref,
<Fx as Deref>::Target: Kurtosis,
[src]
Fx: Deref,
<Fx as Deref>::Target: Kurtosis,
impl<Fx, X> Mean<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: Mean<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: Mean<X>,
impl<Fx, X> Mode<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: Mode<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: Mode<X>,
impl<Fx, X> Rv<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: Rv<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: Rv<X>,
fn ln_f(&Self, &X) -> f64
[src]
fn f(&Self, &X) -> f64
[src]
fn draw<R>(&Self, &mut R) -> X where
R: Rng,
[src]
R: Rng,
fn sample<R>(&Self, usize, &mut R) -> Vec<X> where
R: Rng,
[src]
R: Rng,
fn sample_stream<'r, R: Rng>(
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
[src]
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
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]
Fx: Deref,
<Fx as Deref>::Target: Skewness,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn is_in_subset(&self) -> bool
unsafe fn to_subset_unchecked(&self) -> SS
fn from_subset(element: &SS) -> SP
impl<Fx, X> Support<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: Support<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: Support<X>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,
fn vzip(self) -> V
impl<Fx, X> Variance<X> for Fx where
Fx: Deref,
<Fx as Deref>::Target: Variance<X>,
[src]
Fx: Deref,
<Fx as Deref>::Target: Variance<X>,