Expand description
§bayes-rs
A Rust library for Bayesian inference with MCMC samplers.
This library provides implementations of various MCMC algorithms for Bayesian parameter estimation:
- Metropolis-Hastings sampler
- Gibbs sampler
- Hamiltonian Monte Carlo (HMC)
§Example
use bayes_rs::{
distributions::{Normal, Distribution},
samplers::{MetropolisHastings, Sampler},
};
use nalgebra::DVector;
// Define a simple normal distribution likelihood
let likelihood = |params: &DVector<f64>, data: &[f64]| -> f64 {
let mu = params[0];
let sigma = params[1].exp(); // log-sigma for positivity
data.iter().map(|&x| Normal::new(mu, sigma).unwrap().log_pdf(x)).sum()
};
// Define prior
let prior = |params: &DVector<f64>| -> f64 {
Normal::new(0.0, 10.0).unwrap().log_pdf(params[0]) +
Normal::new(0.0, 1.0).unwrap().log_pdf(params[1])
};
// Create data
let data = vec![1.0, 2.0, 3.0, 2.5, 1.8];
// Initialize sampler
let mut sampler = MetropolisHastings::new(
move |params| likelihood(params, &data) + prior(params),
DVector::from_vec(vec![0.0, 0.0]), // initial parameters
DVector::from_vec(vec![0.5, 0.2]), // proposal standard deviations
).unwrap();
// Run MCMC
let samples = sampler.sample(1000);
Re-exports§
pub use error::BayesError;
pub use error::Result;
Modules§
- diagnostics
- MCMC diagnostics and convergence assessment
- distributions
- Statistical distributions for Bayesian inference
- error
- Error types for the bayes-rs library
- prelude
- Common traits and types used throughout the library
- samplers
- MCMC samplers for Bayesian inference