Struct rv::dist::BetaBinomial
source · pub struct BetaBinomial { /* private fields */ }
Expand description
Beta Binomial distribution over k in {0, …, n}
§Example
use std::f64;
use rv::prelude::*;
let a = 3.0;
let b = 2.0;
let n = 20;
let beta = Beta::new(a, b).unwrap();
let beta_binom = BetaBinomial::new(n, a, b).unwrap();
let beta_mean: f64 = beta.mean().unwrap();
let beta_binom_mean: f64 = beta_binom.mean().unwrap();
assert!( (beta_mean * f64::from(n) - beta_binom_mean).abs() < 1E-12 );
Some functions will panic when given data outside the supported range: [0, n]
let beta_binom = BetaBinomial::new(20, 3.0, 2.0).unwrap();
assert!(!beta_binom.supports(&21_u32));
PMF calls will return 0 for out-of-support data
let f = beta_binom.pmf(&21_u32);
assert_eq!(f, 0.0);
Implementations§
source§impl BetaBinomial
impl BetaBinomial
sourcepub fn new(n: u32, alpha: f64, beta: f64) -> Result<Self, BetaBinomialError>
pub fn new(n: u32, alpha: f64, beta: f64) -> Result<Self, BetaBinomialError>
Create a beta-binomial distirbution
§Arguments
- n: the total number of trials
- alpha: the prior pseudo observations of success
- beta: the prior pseudo observations of failure
sourcepub fn new_unchecked(n: u32, alpha: f64, beta: f64) -> Self
pub fn new_unchecked(n: u32, alpha: f64, beta: f64) -> Self
Creates a new BetaBinomial without checking whether the parameters are valid.
sourcepub fn n(&self) -> u32
pub fn n(&self) -> u32
Get n
, the number of trials.
§Example
use rv::dist::BetaBinomial;
let bb = BetaBinomial::new(10, 1.0, 2.0).unwrap();
assert_eq!(bb.n(), 10);
sourcepub fn alpha(&self) -> f64
pub fn alpha(&self) -> f64
Get the alpha
parameter
§Example
use rv::dist::BetaBinomial;
let bb = BetaBinomial::new(10, 1.0, 2.0).unwrap();
assert_eq!(bb.alpha(), 1.0);
sourcepub fn set_alpha(&mut self, alpha: f64) -> Result<(), BetaBinomialError>
pub fn set_alpha(&mut self, alpha: f64) -> Result<(), BetaBinomialError>
Set the alpha parameter
§Example
use rv::dist::BetaBinomial;
let mut bb = BetaBinomial::new(10, 1.0, 5.0).unwrap();
bb.set_alpha(2.0).unwrap();
assert_eq!(bb.alpha(), 2.0);
Will error for invalid values
assert!(bb.set_alpha(0.1).is_ok());
assert!(bb.set_alpha(0.0).is_err());
assert!(bb.set_alpha(-1.0).is_err());
assert!(bb.set_alpha(f64::INFINITY).is_err());
assert!(bb.set_alpha(f64::NAN).is_err());
sourcepub fn set_alpha_unchecked(&mut self, alpha: f64)
pub fn set_alpha_unchecked(&mut self, alpha: f64)
Set alpha without input validation
sourcepub fn beta(&self) -> f64
pub fn beta(&self) -> f64
Get the beta
parameter
§Example
use rv::dist::BetaBinomial;
let bb = BetaBinomial::new(10, 1.0, 2.0).unwrap();
assert_eq!(bb.beta(), 2.0);
sourcepub fn set_beta(&mut self, beta: f64) -> Result<(), BetaBinomialError>
pub fn set_beta(&mut self, beta: f64) -> Result<(), BetaBinomialError>
Set the beta parameter
§Example
let mut bb = BetaBinomial::new(10, 1.0, 5.0).unwrap();
bb.set_beta(2.0).unwrap();
assert_eq!(bb.beta(), 2.0);
Will error for invalid values
assert!(bb.set_beta(0.1).is_ok());
assert!(bb.set_beta(0.0).is_err());
assert!(bb.set_beta(-1.0).is_err());
assert!(bb.set_beta(f64::INFINITY).is_err());
assert!(bb.set_beta(f64::NAN).is_err());
sourcepub fn set_beta_unchecked(&mut self, beta: f64)
pub fn set_beta_unchecked(&mut self, beta: f64)
Set beta without input validation
sourcepub fn set_n(&mut self, n: u32) -> Result<(), BetaBinomialError>
pub fn set_n(&mut self, n: u32) -> Result<(), BetaBinomialError>
Set the value of the n parameter
§Example
use rv::dist::BetaBinomial;
let mut bb = BetaBinomial::new(10, 0.5, 0.5).unwrap();
bb.set_n(11).unwrap();
assert_eq!(bb.n(), 11);
Will error for invalid values
assert!(bb.set_n(11).is_ok());
assert!(bb.set_n(1).is_ok());
assert!(bb.set_n(0).is_err());
sourcepub fn set_n_unchecked(&mut self, n: u32)
pub fn set_n_unchecked(&mut self, n: u32)
Set the value of n without input validation
Trait Implementations§
source§impl Cdf<i16> for BetaBinomial
impl Cdf<i16> for BetaBinomial
source§impl Cdf<i32> for BetaBinomial
impl Cdf<i32> for BetaBinomial
source§impl Cdf<i64> for BetaBinomial
impl Cdf<i64> for BetaBinomial
source§impl Cdf<i8> for BetaBinomial
impl Cdf<i8> for BetaBinomial
source§impl Cdf<u16> for BetaBinomial
impl Cdf<u16> for BetaBinomial
source§impl Cdf<u32> for BetaBinomial
impl Cdf<u32> for BetaBinomial
source§impl Cdf<u64> for BetaBinomial
impl Cdf<u64> for BetaBinomial
source§impl Cdf<u8> for BetaBinomial
impl Cdf<u8> for BetaBinomial
source§impl Cdf<usize> for BetaBinomial
impl Cdf<usize> for BetaBinomial
source§impl Clone for BetaBinomial
impl Clone for BetaBinomial
source§fn clone(&self) -> BetaBinomial
fn clone(&self) -> BetaBinomial
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for BetaBinomial
impl Debug for BetaBinomial
source§impl<'de> Deserialize<'de> for BetaBinomial
impl<'de> Deserialize<'de> for BetaBinomial
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl DiscreteDistr<i16> for BetaBinomial
impl DiscreteDistr<i16> for BetaBinomial
source§impl DiscreteDistr<i32> for BetaBinomial
impl DiscreteDistr<i32> for BetaBinomial
source§impl DiscreteDistr<i64> for BetaBinomial
impl DiscreteDistr<i64> for BetaBinomial
source§impl DiscreteDistr<i8> for BetaBinomial
impl DiscreteDistr<i8> for BetaBinomial
source§impl DiscreteDistr<u16> for BetaBinomial
impl DiscreteDistr<u16> for BetaBinomial
source§impl DiscreteDistr<u32> for BetaBinomial
impl DiscreteDistr<u32> for BetaBinomial
source§impl DiscreteDistr<u64> for BetaBinomial
impl DiscreteDistr<u64> for BetaBinomial
source§impl DiscreteDistr<u8> for BetaBinomial
impl DiscreteDistr<u8> for BetaBinomial
source§impl DiscreteDistr<usize> for BetaBinomial
impl DiscreteDistr<usize> for BetaBinomial
source§impl Display for BetaBinomial
impl Display for BetaBinomial
source§impl From<&BetaBinomial> for String
impl From<&BetaBinomial> for String
source§fn from(bb: &BetaBinomial) -> String
fn from(bb: &BetaBinomial) -> String
Converts to this type from the input type.
source§impl HasDensity<i16> for BetaBinomial
impl HasDensity<i16> for BetaBinomial
source§impl HasDensity<i32> for BetaBinomial
impl HasDensity<i32> for BetaBinomial
source§impl HasDensity<i64> for BetaBinomial
impl HasDensity<i64> for BetaBinomial
source§impl HasDensity<i8> for BetaBinomial
impl HasDensity<i8> for BetaBinomial
source§impl HasDensity<u16> for BetaBinomial
impl HasDensity<u16> for BetaBinomial
source§impl HasDensity<u32> for BetaBinomial
impl HasDensity<u32> for BetaBinomial
source§impl HasDensity<u64> for BetaBinomial
impl HasDensity<u64> for BetaBinomial
source§impl HasDensity<u8> for BetaBinomial
impl HasDensity<u8> for BetaBinomial
source§impl HasDensity<usize> for BetaBinomial
impl HasDensity<usize> for BetaBinomial
source§impl Mean<f64> for BetaBinomial
impl Mean<f64> for BetaBinomial
source§impl Parameterized for BetaBinomial
impl Parameterized for BetaBinomial
type Parameters = BetaBinomialParameters
fn emit_params(&self) -> Self::Parameters
fn from_params(params: Self::Parameters) -> Self
source§impl PartialEq for BetaBinomial
impl PartialEq for BetaBinomial
source§fn eq(&self, other: &BetaBinomial) -> bool
fn eq(&self, other: &BetaBinomial) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl Sampleable<i16> for BetaBinomial
impl Sampleable<i16> for BetaBinomial
source§impl Sampleable<i32> for BetaBinomial
impl Sampleable<i32> for BetaBinomial
source§impl Sampleable<i64> for BetaBinomial
impl Sampleable<i64> for BetaBinomial
source§impl Sampleable<i8> for BetaBinomial
impl Sampleable<i8> for BetaBinomial
source§impl Sampleable<u16> for BetaBinomial
impl Sampleable<u16> for BetaBinomial
source§impl Sampleable<u32> for BetaBinomial
impl Sampleable<u32> for BetaBinomial
source§impl Sampleable<u64> for BetaBinomial
impl Sampleable<u64> for BetaBinomial
source§impl Sampleable<u8> for BetaBinomial
impl Sampleable<u8> for BetaBinomial
source§impl Sampleable<usize> for BetaBinomial
impl Sampleable<usize> for BetaBinomial
source§impl Serialize for BetaBinomial
impl Serialize for BetaBinomial
source§impl Support<i16> for BetaBinomial
impl Support<i16> for BetaBinomial
source§impl Support<i32> for BetaBinomial
impl Support<i32> for BetaBinomial
source§impl Support<i64> for BetaBinomial
impl Support<i64> for BetaBinomial
source§impl Support<i8> for BetaBinomial
impl Support<i8> for BetaBinomial
source§impl Support<u16> for BetaBinomial
impl Support<u16> for BetaBinomial
source§impl Support<u32> for BetaBinomial
impl Support<u32> for BetaBinomial
source§impl Support<u64> for BetaBinomial
impl Support<u64> for BetaBinomial
source§impl Support<u8> for BetaBinomial
impl Support<u8> for BetaBinomial
source§impl Support<usize> for BetaBinomial
impl Support<usize> for BetaBinomial
Auto Trait Implementations§
impl !Freeze for BetaBinomial
impl RefUnwindSafe for BetaBinomial
impl Send for BetaBinomial
impl Sync for BetaBinomial
impl Unpin for BetaBinomial
impl UnwindSafe for BetaBinomial
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§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>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.