Crate bayes_rs

Source
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