[−][src]Trait rv::traits::ConjugatePrior
A prior on Fx
that induces a posterior that is the same form as the prior
Example
Conjugate analysis of coin flips using Bernoulli with a Beta prior on the success probability.
use rv::traits::ConjugatePrior; use rv::dist::{Bernoulli, Beta}; let flips = vec![true, false, false]; let prior = Beta::jeffreys(); // If we observe more false than true, the posterior predictive // probability of true decreases. let pp_no_obs = prior.pp(&true, &(&vec![]).into()); let pp_obs = prior.pp(&true, &(&flips).into()); assert!(pp_obs < pp_no_obs);
Associated Types
Loading content...Required methods
fn posterior(&self, x: &DataOrSuffStat<X, Fx>) -> Self::Posterior
Computes the posterior distribution from the data
fn ln_m(&self, x: &DataOrSuffStat<X, Fx>) -> f64
Log marginal likelihood
fn ln_pp(&self, y: &X, x: &DataOrSuffStat<X, Fx>) -> f64
Log posterior predictive of y given x
Provided methods
fn m(&self, x: &DataOrSuffStat<X, Fx>) -> f64
Marginal likelihood of x
fn pp(&self, y: &X, x: &DataOrSuffStat<X, Fx>) -> f64
Posterior Predictive distribution
Implementors
impl ConjugatePrior<bool, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<bool, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<bool, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &bool, x: &DataOrSuffStat<bool, Bernoulli>) -> f64
[src]
impl ConjugatePrior<f64, Gaussian> for NormalGamma
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<f64, Gaussian>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<f64, Gaussian>) -> f64
[src]
fn ln_pp(&self, y: &f64, x: &DataOrSuffStat<f64, Gaussian>) -> f64
[src]
impl ConjugatePrior<i16, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<i16, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<i16, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &i16, x: &DataOrSuffStat<i16, Bernoulli>) -> f64
[src]
impl ConjugatePrior<i32, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<i32, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<i32, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &i32, x: &DataOrSuffStat<i32, Bernoulli>) -> f64
[src]
impl ConjugatePrior<i64, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<i64, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<i64, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &i64, x: &DataOrSuffStat<i64, Bernoulli>) -> f64
[src]
impl ConjugatePrior<i8, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<i8, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<i8, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &i8, x: &DataOrSuffStat<i8, Bernoulli>) -> f64
[src]
impl ConjugatePrior<isize, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<isize, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<isize, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &isize, x: &DataOrSuffStat<isize, Bernoulli>) -> f64
[src]
impl ConjugatePrior<u16, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<u16, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<u16, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &u16, x: &DataOrSuffStat<u16, Bernoulli>) -> f64
[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]
impl ConjugatePrior<u32, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<u32, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<u32, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &u32, x: &DataOrSuffStat<u32, Bernoulli>) -> 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]
impl ConjugatePrior<u64, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<u64, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<u64, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &u64, x: &DataOrSuffStat<u64, Bernoulli>) -> f64
[src]
impl ConjugatePrior<u8, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<u8, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<u8, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &u8, x: &DataOrSuffStat<u8, Bernoulli>) -> 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]
impl ConjugatePrior<usize, Bernoulli> for Beta
[src]
type Posterior = Self
fn posterior(&self, x: &DataOrSuffStat<usize, Bernoulli>) -> Self
[src]
fn ln_m(&self, x: &DataOrSuffStat<usize, Bernoulli>) -> f64
[src]
fn ln_pp(&self, y: &usize, x: &DataOrSuffStat<usize, Bernoulli>) -> f64
[src]
impl ConjugatePrior<Matrix<f64, Dynamic, U1, VecStorage<f64, Dynamic, U1>>, MvGaussian> for NormalInvWishart
[src]
type Posterior = NormalInvWishart
fn posterior(
&self,
x: &DataOrSuffStat<'a, DVector<f64>, MvGaussian>
) -> NormalInvWishart
[src]
&self,
x: &DataOrSuffStat<'a, DVector<f64>, MvGaussian>
) -> NormalInvWishart
fn ln_m(&self, x: &DataOrSuffStat<'a, DVector<f64>, MvGaussian>) -> f64
[src]
fn ln_pp(
&self,
y: &DVector<f64>,
x: &DataOrSuffStat<'a, DVector<f64>, MvGaussian>
) -> f64
[src]
&self,
y: &DVector<f64>,
x: &DataOrSuffStat<'a, DVector<f64>, MvGaussian>
) -> f64