template<typename T = double>
liarsdice::bayesian::PosteriorCalculator class

Calculates posterior distributions with numerical stability.

Template parameters
T Floating point type for calculations

Implements various methods for posterior calculation including:

  • Conjugate updates for known prior-likelihood pairs
  • Numerical integration for non-conjugate cases
  • Importance sampling and MCMC for complex posteriors

Public types

using value_type = T
using vector_type = boost::numeric::ublas::vector<T>
using prior_ptr = std::shared_ptr<PriorDistribution<T>>
using likelihood_ptr = std::shared_ptr<LikelihoodFunction<T>>

Constructors, destructors, conversion operators

PosteriorCalculator(prior_ptr prior, likelihood_ptr likelihood, std::optional<unsigned int> seed = std::nullopt)
Construct a posterior calculator.

Public functions

void update(const vector_type& data)
Update posterior with new data.
auto mean() const -> T
Get the posterior mean.
auto mode() const -> T
Get the posterior mode (MAP estimate)
auto variance() const -> T
Get the posterior variance.
auto credible_interval(T confidence = 0.95) const -> std::pair<T, T>
Get credible interval.
auto highest_density_interval(T confidence = 0.95) const -> std::pair<T, T>
Get highest density interval (HDI)
auto marginal_likelihood() const -> T
Calculate marginal likelihood (model evidence)
auto predictive_sample(std::size_t n_samples) const -> vector_type
Generate samples from the posterior.
auto effective_sample_size() const -> T
Get effective sample size for importance sampling.
auto information_gain() const -> T
Calculate information gain (KL divergence from prior to posterior)
auto convergence_metric() const -> T
Get convergence metric.
auto num_observations() const -> std::size_t
Get number of observations processed.

Function documentation

template<typename T>
liarsdice::bayesian::PosteriorCalculator<T>::PosteriorCalculator(prior_ptr prior, likelihood_ptr likelihood, std::optional<unsigned int> seed = std::nullopt)

Construct a posterior calculator.

Parameters
prior Prior distribution
likelihood Likelihood function
seed Optional seed for deterministic testing (nullopt for random)

template<typename T>
void liarsdice::bayesian::PosteriorCalculator<T>::update(const vector_type& data)

Update posterior with new data.

Parameters
data New observations

template<typename T>
std::pair<T, T> liarsdice::bayesian::PosteriorCalculator<T>::credible_interval(T confidence = 0.95) const

Get credible interval.

Parameters
confidence Confidence level (e.g., 0.95)
Returns Pair of (lower, upper) bounds

template<typename T>
std::pair<T, T> liarsdice::bayesian::PosteriorCalculator<T>::highest_density_interval(T confidence = 0.95) const

Get highest density interval (HDI)

Parameters
confidence Confidence level
Returns Pair of (lower, upper) bounds for HDI

template<typename T>
vector_type liarsdice::bayesian::PosteriorCalculator<T>::predictive_sample(std::size_t n_samples) const

Generate samples from the posterior.

Parameters
n_samples Number of samples to generate
Returns Vector of posterior samples