Online Program

Return to main conference page
Thursday, May 17
Computational Statistics
Best of Computational and Graphical Statistics
Thu, May 17, 3:30 PM - 5:00 PM
Grand Ballroom E

Programming With Models: Writing Statistical Algorithms for General Model Structures With NIMBLE (304348)

Clifford Anderson-Bergman, Sandia National Laboratories 
Rastislav Bodik, University of Washington 
Perry de Valpine, University of California 
Christopher J. Paciorek, University of California 
Duncan Temple Lang, University of California 
*Daniel Turek, Williams College 

Keywords: Domain-specific language, Hierarchical models, MCEM, MCMC, Probabilistic programming, R

We present NIMBLE, a system for programming statistical algorithms for general hierarchical (graphical) model structures within R. NIMBLE is designed to meet three challenges: flexible model specification, a language for programming algorithms that can operate on these models, and a balance between high-level programmability and execution efficiency. For model specification, NIMBLE extends the BUGS language to create model objects, which can manipulate variables, calculate log-density values, generate random simulations, and query the relationships among variables. For algorithmic programming, NIMBLE supports programmable functions that operate with model objects using two-staged evaluation. To achieve efficient second-stage computation, NIMBLE compiles models and algorithms via C++, using the Eigen library for linear algebra, and provides an interface within R to compiled objects. The NIMBLE language represents a compilable domain-specific language (DSL) embedded within R. Here, we provide an overview of the design and rationale for NIMBLE, along with examples of hierarchical models and statistical algorithms for operating on models such as Markov chain Monte Carlo (MCMC), Monte Carlo expectation maximization (MCEM), sequential Monte Carlo (SMC), and cross-validation (CV).