template<typename T = double>
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 |