Programming with models: writing statistical algorithms for general model structures with NIMBLE
Perry de Valpine, Daniel Turek, Christopher J. Paciorek, Clifford, Anderson-Bergman, Duncan Temple Lang, Rastislav Bodik

TL;DR
NIMBLE is a system within R that enables flexible specification of statistical models and efficient algorithm programming through a domain-specific language, supporting various inference methods like MCMC and importance sampling.
Contribution
The paper introduces NIMBLE, a novel system that extends BUGS for model specification and provides a flexible, efficient language for programming statistical algorithms within R.
Findings
Supports flexible model specification via extended BUGS language
Enables efficient algorithm execution through C++ compilation and linear algebra optimization
Demonstrates applications in MCMC, importance sampling, and MCEM
Abstract
We describe NIMBLE, a system for programming statistical algorithms for general model structures within R. NIMBLE is designed to meet three challenges: flexible model specification, a language for programming algorithms that can use different models, and a balance between high-level programmability and execution efficiency. For model specification, NIMBLE extends the BUGS language and creates model objects, which can manipulate variables, calculate log probability values, generate simulations, and query the relationships among variables. For algorithm programming, NIMBLE provides functions that operate with model objects using two stages of evaluation. The first stage allows specialization of a function to a particular model and/or nodes, such as creating a Metropolis-Hastings sampler for a particular block of nodes. The second stage allows repeated execution of computations using the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
