polya-gamma-0.5.1 has been yanked.
Polya-Gamma Sampler for Rust
A high-performance sampler for Polya-Gamma random variates.
Installation
Run cargo add polya-gamma or add this to your Cargo.toml:
[]
= "0.5"
Regression features require additional dependencies:
[]
= { = "0.5", = ["regression"] }
Quick Start
use PolyaGamma;
use ;
Features
- Exact Sampling: Implements Devroye's algorithm for exact sampling from PG(1, c)
- Parallel Processing: Optional Rayon support for generating multiple samples in parallel
- Bayesian Logistic Regression: Built-in Gibbs sampler for Bayesian logistic regression
- Documentation: Comprehensive API documentation with examples
Usage Examples
Basic Sampling
use PolyaGamma;
use thread_rng;
let mut pg = new;
let mut rng = thread_rng;
// Draw a single sample
let sample = pg.draw;
// Draw multiple samples
let samples = pg.draw_vec;
Bayesian Logistic Regression
use GibbsLogit;
let model = new;
let results = model.run?;
results.summary;
Performance
The implementation is optimized for both single-threaded and parallel workloads. For large-scale sampling, the rayon feature provides significant speedups on multi-core systems.
Even in the single-threaded case, this crate has far better performance than BayesLogit:
- If $b < 1.0$, this crate is about 2.5x faster.
- If $b == 1.0$, this crate is about 1.3x faster.
- If $b > 1.0$, this crate can be up to 75x faster(!) If multithreaded operation is enabled, performance also scales with the number of cores available. See the benchmarks for details.
Documentation
Full API documentation is available on docs.rs.
References
- Polson, N.G., Scott, J.G., & Windle, J. (2013). Bayesian Inference for Logistic Models Using Polya-Gamma Latent Variables. Journal of the American Statistical Association, 108(504): 1339–1349.
- Windle, J., Polson, N.G., & Scott, J.G. (2014). Sampling Pólya-Gamma random variates: alternate and approximate techniques. arXiv:1405.0506.
License
This project is licensed under the terms of the MIT OR Apache-2.0 license. See the LICENSE-MIT and LICENSE-APACHE files for details.