bayes_rs/lib.rs
1//! # bayes-rs
2//!
3//! A Rust library for Bayesian inference with MCMC samplers.
4//!
5//! This library provides implementations of various MCMC algorithms for Bayesian parameter estimation:
6//! - Metropolis-Hastings sampler
7//! - Gibbs sampler
8//! - Hamiltonian Monte Carlo (HMC)
9//!
10//! ## Example
11//!
12//! ```rust
13//! use bayes_rs::{
14//! distributions::{Normal, Distribution},
15//! samplers::{MetropolisHastings, Sampler},
16//! };
17//! use nalgebra::DVector;
18//!
19//! // Define a simple normal distribution likelihood
20//! let likelihood = |params: &DVector<f64>, data: &[f64]| -> f64 {
21//! let mu = params[0];
22//! let sigma = params[1].exp(); // log-sigma for positivity
23//! data.iter().map(|&x| Normal::new(mu, sigma).unwrap().log_pdf(x)).sum()
24//! };
25//!
26//! // Define prior
27//! let prior = |params: &DVector<f64>| -> f64 {
28//! Normal::new(0.0, 10.0).unwrap().log_pdf(params[0]) +
29//! Normal::new(0.0, 1.0).unwrap().log_pdf(params[1])
30//! };
31//!
32//! // Create data
33//! let data = vec![1.0, 2.0, 3.0, 2.5, 1.8];
34//!
35//! // Initialize sampler
36//! let mut sampler = MetropolisHastings::new(
37//! move |params| likelihood(params, &data) + prior(params),
38//! DVector::from_vec(vec![0.0, 0.0]), // initial parameters
39//! DVector::from_vec(vec![0.5, 0.2]), // proposal standard deviations
40//! ).unwrap();
41//!
42//! // Run MCMC
43//! let samples = sampler.sample(1000);
44//! ```
45
46pub mod diagnostics;
47pub mod distributions;
48pub mod error;
49pub mod samplers;
50
51pub use error::{BayesError, Result};
52
53/// Common traits and types used throughout the library
54pub mod prelude {
55 pub use crate::distributions::*;
56 pub use crate::error::{BayesError, Result};
57 pub use crate::samplers::*;
58 pub use nalgebra::{DMatrix, DVector};
59}