Stan: A Probabilistic Programming Language


Stan is a probabilistic programming language for specifying statistical models. A Stan program imperatively defines a log probability function over parameters conditioned on specified data and constants. As of version 2.2.0, Stan provides full Bayesian inference for continuous-variable models through Markov chain Monte Carlo methods such as the No-U-Turn sampler, an adaptive form of Hamiltonian Monte Carlo sampling. Penalized maximum likelihood estimates are calculated using optimization methods such as the Broyden-Fletcher-Goldfarb-Shanno algorithm. Stan is also a platform for computing log densities and their gradients and Hessians, which can be used in alternative algorithms such as variational Bayes, expectation propagation, and marginal inference using approximate integration. To this end, Stan is set up so that the densities, gradients, and Hessians, along with intermediate quantities of the algorithm such as acceptance probabilities, are easily accessible. Stan can be called from the command line, through R using the RStan package, or through Python using the PyStan package. All three interfaces support sampling or optimization-based inference and analysis, and RStan and PyStan also provide access to log probabilities, gradients, Hessians, and data I/O.

Extracted Key Phrases

11 Figures and Tables

Citations per Year

251 Citations

Semantic Scholar estimates that this publication has 251 citations based on the available data.

See our FAQ for additional information.

Cite this paper

@inproceedings{Carpenter2014StanAP, title={Stan: A Probabilistic Programming Language}, author={Bob Carpenter and Daniel Lee and Marcus Brubaker and Allen B. Riddell and Andrew Gelman and Ben Goodrich and Jiqiang Guo and Matt Hoffman and Michael Betancourt and Peter Li}, year={2014} }