Struct russell_stat::DistributionGumbel
source · pub struct DistributionGumbel { /* private fields */ }
Expand description
Implements the Gumbel distribution
This is a Type I Extreme Value Distribution (largest value)
Implementations§
Trait Implementations§
source§impl ProbabilityDistribution for DistributionGumbel
impl ProbabilityDistribution for DistributionGumbel
source§fn pdf(&self, x: f64) -> f64
fn pdf(&self, x: f64) -> f64
Evaluates the Probability Density Function (PDF)
use russell_lab::approx_eq;
use russell_stat::*;
fn main() -> Result<(), StrError> {
let (location, scale) = (2.0, 3.0);
let dist = DistributionGumbel::new(location, scale)?;
approx_eq(dist.pdf(1.0), 0.11522236828583457, 1e-15);
// R:
// library(evd)
// format(dgumbel(1.0, 2.0, 3.0), digits=17)
// Mathematica:
// N[PDF[GumbelDistribution[-2, 3], -1], 17]
Ok(())
}
source§fn cdf(&self, x: f64) -> f64
fn cdf(&self, x: f64) -> f64
Evaluates the Cumulative Distribution Function (CDF)
use russell_lab::approx_eq;
use russell_stat::*;
fn main() -> Result<(), StrError> {
let (location, scale) = (2.0, 3.0);
let dist = DistributionGumbel::new(location, scale)?;
approx_eq(dist.cdf(1.0), 0.24768130366579455, 1e-15);
// R:
// library(evd)
// format(pgumbel(1.0, 2.0, 3.0), digits=17)
// Mathematica:
// N[1 - CDF[GumbelDistribution[-2, 3], -1], 17]
Ok(())
}
source§fn mean(&self) -> f64
fn mean(&self) -> f64
Returns the Mean
use russell_lab::{approx_eq, math::EULER};
use russell_stat::*;
fn main() -> Result<(), StrError> {
let (location, scale) = (2.0, 3.0);
let dist = DistributionGumbel::new(location, scale)?;
approx_eq(dist.mean(), location + EULER * scale, 1e-15);
// Mathematica: -Mean[GumbelDistribution[-location, scale]]
Ok(())
}
source§fn variance(&self) -> f64
fn variance(&self) -> f64
Returns the Variance
§Examples
use russell_lab::approx_eq;
use russell_stat::*;
fn main() -> Result<(), StrError> {
let (location, scale) = (2.0, 3.0);
let dist = DistributionGumbel::new(location, scale)?;
approx_eq(dist.variance(), 14.804406601634038, 1e-14);
// Mathematica: N[Variance[GumbelDistribution[-2, 3]], 17]
Ok(())
}
source§fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> f64
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> f64
Generates a pseudo-random number belonging to this probability distribution
§Examples
use russell_stat::*;
fn main() -> Result<(), StrError> {
let (location, scale) = (2.0, 3.0);
let dist = DistributionGumbel::new(location, scale)?;
let mut rng = get_rng();
println!("sample = {}", dist.sample(&mut rng));
Ok(())
}
Auto Trait Implementations§
impl Freeze for DistributionGumbel
impl RefUnwindSafe for DistributionGumbel
impl Send for DistributionGumbel
impl Sync for DistributionGumbel
impl Unpin for DistributionGumbel
impl UnwindSafe for DistributionGumbel
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
Mutably borrows from an owned value. Read more