[][src]Trait rv::traits::ConjugatePrior

pub trait ConjugatePrior<X, Fx>: Rv<Fx> where
    Fx: Rv<X> + HasSuffStat<X>, 
{ type Posterior: Rv<Fx>; fn posterior(&self, x: &DataOrSuffStat<X, Fx>) -> Self::Posterior;
fn ln_m(&self, x: &DataOrSuffStat<X, Fx>) -> f64;
fn ln_pp(&self, y: &X, x: &DataOrSuffStat<X, Fx>) -> f64; fn m(&self, x: &DataOrSuffStat<X, Fx>) -> f64 { ... }
fn pp(&self, y: &X, x: &DataOrSuffStat<X, Fx>) -> f64 { ... } }

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

type Posterior: Rv<Fx>

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

Loading content...

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

Loading content...

Implementors

impl ConjugatePrior<bool, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<f64, Gaussian> for NormalGamma[src]

type Posterior = Self

impl ConjugatePrior<i16, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<i32, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<i64, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<i8, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<isize, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<u16, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<u16, Poisson> for Gamma[src]

type Posterior = Self

impl ConjugatePrior<u32, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<u32, Poisson> for Gamma[src]

type Posterior = Self

impl ConjugatePrior<u64, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<u8, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<u8, Poisson> for Gamma[src]

type Posterior = Self

impl ConjugatePrior<usize, Bernoulli> for Beta[src]

type Posterior = Self

impl ConjugatePrior<Matrix<f64, Dynamic, U1, VecStorage<f64, Dynamic, U1>>, MvGaussian> for NormalInvWishart[src]

type Posterior = NormalInvWishart

impl<X: CategoricalDatum> ConjugatePrior<X, Categorical> for Dirichlet[src]

type Posterior = Self

impl<X: CategoricalDatum> ConjugatePrior<X, Categorical> for SymmetricDirichlet[src]

type Posterior = Dirichlet

Loading content...