Trait rv::traits::SuffStat

source ·
pub trait SuffStat<X> {
    // Required methods
    fn n(&self) -> usize;
    fn observe(&mut self, x: &X);
    fn forget(&mut self, x: &X);

    // Provided methods
    fn observe_many(&mut self, xs: &[X]) { ... }
    fn forget_many(&mut self, xs: &[X]) { ... }
}
Expand description

Is a sufficient statistic for a distribution.

§Examples

Basic suffstat useage.

use rv::data::BernoulliSuffStat;
use rv::traits::SuffStat;

// Bernoulli sufficient statistics are the number of observations, n, and
// the number of successes, k.
let mut stat = BernoulliSuffStat::new();

assert!(stat.n() == 0 && stat.k() == 0);

stat.observe(&true);  // observe `true`
assert!(stat.n() == 1 && stat.k() == 1);

stat.observe(&false);  // observe `false`
assert!(stat.n() == 2 && stat.k() == 1);

stat.forget_many(&vec![false, true]);  // forget `true` and `false`
assert!(stat.n() == 0 && stat.k() == 0);

Conjugate analysis of coin flips using Bernoulli with a Beta prior on the success probability.

use rv::traits::SuffStat;
use rv::traits::ConjugatePrior;
use rv::data::BernoulliSuffStat;
use rv::dist::{Bernoulli, Beta};

let flips = vec![true, false, false];

// Pack the data into a sufficient statistic that holds the number of
// trials and the number of successes
let mut stat = BernoulliSuffStat::new();
stat.observe_many(&flips);

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, &(&BernoulliSuffStat::new()).into());
let pp_obs = prior.pp(&true, &(&flips).into());

assert!(pp_obs < pp_no_obs);

Required Methods§

source

fn n(&self) -> usize

Returns the number of observations

source

fn observe(&mut self, x: &X)

Assimilate the datum x into the statistic

source

fn forget(&mut self, x: &X)

Remove the datum x from the statistic

Provided Methods§

source

fn observe_many(&mut self, xs: &[X])

Assimilate several observations

source

fn forget_many(&mut self, xs: &[X])

Forget several observations

Implementors§