A unified probabilistic programming library bridging the gap between user-friendly R syntax and high-performance JAX computation.
Run bespoke models on CPU, GPU, or TPU with ease.
BayesianInference (BI) provides a unified experience across R, Python, and Julia. Whether you work in R's formula syntax, Python's object-oriented approach, or Julia's mathematical elegance, the model logic remains consistent.
| R Syntax | Python Syntax | Julia Syntax |
|---|---|---|
|
|
|
Leveraging Just-In-Time (JIT) compilation, BI outperforms traditional engines on standard hardware and unlocks massive scalability on GPU clusters for large datasets.
Benchmark: Network Size 100 (Lower is Better)
| Engine | Execution Time | Relative Performance |
|---|---|---|
| STAN (CPU) | ████████████████████████████ |
Baseline |
| BI (CPU) | ████████████ |
~2.5x Faster |
> Comparison of execution time for a Social Relations Model. Source: Sosa et al. (2025).
Use devtools to pull the latest development version from GitHub.
if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
devtools::install_github("https://github.com/BGN-for-ASNA/BIR")
Run the starting test to create the Python virtual environment managed by reticulate.
library(BayesianInference)
# Run the starting test to install Python dependencies
BI_starting_test()
Choose 'cpu', 'gpu', or 'tpu' when importing the library.
# Initialize on CPU (default) or GPU/TPU
m <- importBI(platform = 'cpu')
The package provides wrappers for a comprehensive set of distributions from NumPyro.
bi.dist.normal, bi.dist.uniform, bi.dist.student_t
bi.dist.cauchy, bi.dist.halfcauchy, bi.dist.halfnormal
bi.dist.gamma, bi.dist.inverse_gamma, bi.dist.exponential
bi.dist.beta, bi.dist.beta_proportion
bi.dist.laplace, bi.dist.asymmetric_laplace
bi.dist.log_normal, bi.dist.log_uniform
bi.dist.pareto, bi.dist.weibull, bi.dist.gumbel
bi.dist.chi2, bi.dist.gompertz
bi.dist.bernoulli, bi.dist.binomial
bi.dist.poisson, bi.dist.negative_binomial
bi.dist.geometric, bi.dist.discrete_uniform
bi.dist.beta_binomial, bi.dist.zero_inflated_poisson
bi.dist.multivariate_normal, bi.dist.multivariate_student_t
bi.dist.dirichlet, bi.dist.dirichlet_multinomial
bi.dist.multinomialbi.dist.lkj, bi.dist.lkj_cholesky
bi.dist.wishart, bi.dist.wishart_cholesky
bi.dist.gaussian_random_walkbi.dist.gaussian_state_spacebi.dist.euler_maruyamabi.dist.car (Conditional AutoRegressive)bi.dist.mixture, bi.dist.mixture_same_family
bi.dist.truncated_normal, bi.dist.truncated_cauchy
bi.dist.lower_truncated_power_law(See package documentation for the full list)
For full documentation of functions and parameters, you can use the built-in R help or the package helper:
# Open package documentation
bi.doc()
# Help for a specific function
?bi.dist.normal
GPU support available on compatible systems with JAX GPU installation.
BayesianInference (BIR)
Based on "The Bayesian Inference library for Python, R and Julia" by Sosa, McElreath, & Ross (2025).
Documentation | GitHub | Issues
© 2025 BayesianInference Team. Released under GPL-3.0.