Struct rv::dist::NormalInvChiSquared [−][src]
pub struct NormalInvChiSquared { /* fields omitted */ }
Prior for Gaussian
Given x ~ N(μ, σ)
, the Normal Inverse Gamma prior implies that
μ ~ N(m, sqrt(v)σ)
and ρ ~ InvGamma(a, b)
.
Implementations
impl NormalInvChiSquared
[src]
impl NormalInvChiSquared
[src]pub fn new(
m: f64,
k: f64,
v: f64,
s2: f64
) -> Result<Self, NormalInvChiSquaredError>
[src]
m: f64,
k: f64,
v: f64,
s2: f64
) -> Result<Self, NormalInvChiSquaredError>
Create a new Normal Inverse Gamma distribution
Arguments
- m: The prior mean
- v: Relative variance of μ versus data
- a: The mean of variance is b / (a - 1)
- b: Degrees of freedom of the variance
pub fn new_unchecked(m: f64, k: f64, v: f64, s2: f64) -> Self
[src]
Creates a new NormalInvChiSquared without checking whether the parameters are valid.
pub fn params(&self) -> (f64, f64, f64, f64)
[src]
Returns (m, k, v, s2)
pub fn m(&self) -> f64
[src]
Get the m parameter
pub fn set_m(&mut self, m: f64) -> Result<(), NormalInvChiSquaredError>
[src]
Set the value of m
Example
use rv::dist::NormalInvChiSquared; let mut nix = NormalInvChiSquared::new(0.0, 1.2, 2.3, 3.4).unwrap(); assert_eq!(nix.m(), 0.0); nix.set_m(-1.1).unwrap(); assert_eq!(nix.m(), -1.1);
Will error for invalid values
assert!(nix.set_m(-1.1).is_ok()); assert!(nix.set_m(std::f64::INFINITY).is_err()); assert!(nix.set_m(std::f64::NEG_INFINITY).is_err()); assert!(nix.set_m(std::f64::NAN).is_err());
pub fn set_m_unchecked(&mut self, m: f64)
[src]
Set the value of m without input validation
pub fn k(&self) -> f64
[src]
Get the k parameter
pub fn set_k(&mut self, k: f64) -> Result<(), NormalInvChiSquaredError>
[src]
Set the value of k
Example
use rv::dist::NormalInvChiSquared; let mut nix = NormalInvChiSquared::new(0.0, 1.2, 2.3, 3.4).unwrap(); assert_eq!(nix.k(), 1.2); nix.set_k(4.3).unwrap(); assert_eq!(nix.k(), 4.3);
Will error for invalid values
assert!(nix.set_k(2.1).is_ok()); // must be greater than zero assert!(nix.set_k(0.0).is_err()); assert!(nix.set_k(-1.0).is_err()); assert!(nix.set_k(std::f64::INFINITY).is_err()); assert!(nix.set_k(std::f64::NEG_INFINITY).is_err()); assert!(nix.set_k(std::f64::NAN).is_err());
pub fn set_k_unchecked(&mut self, k: f64)
[src]
Set the value of k without input validation
pub fn v(&self) -> f64
[src]
Get the v parameter
pub fn set_v(&mut self, v: f64) -> Result<(), NormalInvChiSquaredError>
[src]
Set the value of v
Example
use rv::dist::NormalInvChiSquared; let mut nix = NormalInvChiSquared::new(0.0, 1.2, 2.3, 3.4).unwrap(); assert_eq!(nix.v(), 2.3); nix.set_v(4.3).unwrap(); assert_eq!(nix.v(), 4.3);
Will error for invalid values
assert!(nix.set_v(2.1).is_ok()); // must be greater than zero assert!(nix.set_v(0.0).is_err()); assert!(nix.set_v(-1.0).is_err()); assert!(nix.set_v(std::f64::INFINITY).is_err()); assert!(nix.set_v(std::f64::NEG_INFINITY).is_err()); assert!(nix.set_v(std::f64::NAN).is_err());
pub fn set_v_unchecked(&mut self, v: f64)
[src]
Set the value of v without input validation
pub fn s2(&self) -> f64
[src]
Get the s2 parameter
pub fn set_s2(&mut self, s2: f64) -> Result<(), NormalInvChiSquaredError>
[src]
Set the value of s2
Example
use rv::dist::NormalInvChiSquared; let mut nix = NormalInvChiSquared::new(0.0, 1.2, 2.3, 3.4).unwrap(); assert_eq!(nix.s2(), 3.4); nix.set_s2(4.3).unwrap(); assert_eq!(nix.s2(), 4.3);
Will error for invalid values
assert!(nix.set_s2(2.1).is_ok()); // must be greater than zero assert!(nix.set_s2(0.0).is_err()); assert!(nix.set_s2(-1.0).is_err()); assert!(nix.set_s2(std::f64::INFINITY).is_err()); assert!(nix.set_s2(std::f64::NEG_INFINITY).is_err()); assert!(nix.set_s2(std::f64::NAN).is_err());
pub fn set_s2_unchecked(&mut self, s2: f64)
[src]
Set the value of s2 without input validation
Trait Implementations
impl Clone for NormalInvChiSquared
[src]
impl Clone for NormalInvChiSquared
[src]fn clone(&self) -> NormalInvChiSquared
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl ConjugatePrior<f64, Gaussian> for NormalInvChiSquared
[src]
impl ConjugatePrior<f64, Gaussian> for NormalInvChiSquared
[src]type Posterior = Self
Type of the posterior distribution
type LnMCache = f64
Type of the ln_m
cache
type LnPpCache = (GaussianSuffStat, f64)
Type of the ln_pp
cache
fn posterior(&self, x: &DataOrSuffStat<'_, f64, Gaussian>) -> Self
[src]
fn ln_m_cache(&self) -> Self::LnMCache
[src]
fn ln_m_with_cache(
&self,
cache: &Self::LnMCache,
x: &DataOrSuffStat<'_, f64, Gaussian>
) -> f64
[src]
&self,
cache: &Self::LnMCache,
x: &DataOrSuffStat<'_, f64, Gaussian>
) -> f64
fn ln_pp_cache(&self, x: &DataOrSuffStat<'_, f64, Gaussian>) -> Self::LnPpCache
[src]
fn ln_pp_with_cache(&self, cache: &Self::LnPpCache, y: &f64) -> f64
[src]
fn ln_m(&self, x: &DataOrSuffStat<'_, X, Fx>) -> f64
[src]
fn ln_pp(&self, y: &X, x: &DataOrSuffStat<'_, X, Fx>) -> f64
[src]
fn m(&self, x: &DataOrSuffStat<'_, X, Fx>) -> f64
[src]
fn pp(&self, y: &X, x: &DataOrSuffStat<'_, X, Fx>) -> f64
[src]
impl GewekeTestable<Gaussian, f64> for NormalInvChiSquared
[src]
impl GewekeTestable<Gaussian, f64> for NormalInvChiSquared
[src]impl PartialEq<NormalInvChiSquared> for NormalInvChiSquared
[src]
impl PartialEq<NormalInvChiSquared> for NormalInvChiSquared
[src]fn eq(&self, other: &NormalInvChiSquared) -> bool
[src]
fn ne(&self, other: &NormalInvChiSquared) -> bool
[src]
impl Rv<Gaussian> for NormalInvChiSquared
[src]
impl Rv<Gaussian> for NormalInvChiSquared
[src]Auto Trait Implementations
impl RefUnwindSafe for NormalInvChiSquared
impl RefUnwindSafe for NormalInvChiSquared
impl Send for NormalInvChiSquared
impl Send for NormalInvChiSquared
impl Sync for NormalInvChiSquared
impl Sync for NormalInvChiSquared
impl Unpin for NormalInvChiSquared
impl Unpin for NormalInvChiSquared
impl UnwindSafe for NormalInvChiSquared
impl UnwindSafe for NormalInvChiSquared
Blanket Implementations
impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
pub fn to_subset(&self) -> Option<SS>
pub fn is_in_subset(&self) -> bool
pub fn to_subset_unchecked(&self) -> SS
pub fn from_subset(element: &SS) -> SP
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,