Stan (software)
Original author(s) | Stan Development Team |
---|---|
Initial release | August 30, 2012 |
Stable release |
2.13.0
/ November 25, 2016 |
Repository |
github |
Development status | Active |
Written in | C++ |
Operating system | Unix-like, Microsoft Windows, Mac OS X |
Platform | Intel x86 - 32-bit, x64 |
Size | 41.2 MB |
Type | Statistical package |
License | New BSD License |
Website |
mc-stan |
Stan is a probabilistic programming language for statistical inference written in C++.[1] The Stan language is used to specify a (Bayesian) statistical model with an imperative program calculating the log probability density function.[1]:2
Stan is licensed under the New BSD License. Stan is named in honour of Stanislaw Ulam, pioneer of the Monte Carlo method.[1]:xii
Interfaces
Stan can be accessed through several interfaces:
- CmdStan - command-line executable for the shell
- RStan - integration with the R software environment
- PyStan - integration with the Python programming language
- MatlabStan - integration with the MATLAB numerical computing environment
- Stan.jl - integration with the Julia programming language
- StataStan - integration with Stata
Algorithms
Stan implements gradient-based Markov chain Monte Carlo (MCMC) algorithms for Bayesian inference, stochastic, gradient-based variational Bayesian methods for approximate Bayesian inference, and gradient-based optimization for penalized maximum likelihood estimation.
- MCMC algorithms:
- No-U-Turn sampler[1]:3, 26[2]:28 (NUTS), a variant of HMC and Stan's default MCMC engine
- Hamiltonian Monte Carlo
- Variational inference algorithms:
- Black-box Variational Inference[3]
- Optimization algorithms:
- Limited-memory BFGS (Stan's default optimization algorithm)
- Broyden–Fletcher–Goldfarb–Shanno algorithm
- Laplace's method for classical standard error estimates and approximate Bayesian posteriors
Automatic differentiation
Stan implements reverse-mode automatic differentiation to calculate gradients of the model, which is required by HMC, NUTS, L-BFGS, BFGS, and variational inference.[1]:199 The automatic differentiation within Stan can be used outside of the probabilistic programming language.
Usage
Stan is used in fields including social science[4] and pharmaceutical statistics.[5]
References
- 1 2 3 4 5 Stan Development Team. 2015. Stan Modeling Language User's Guide and Reference Manual, Version 2.9.0
- ↑ Hoffman, Matthew D.; Gelman, Andrew (April 2014). "The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo". Journal of Machine Learning Research. 15: pp. 1593–1623.
- ↑ Kucukelbir, Alp; Ranganath, Rajesh; Blei, David M. (June 2015). "Automatic Variational Inference in Stan". 1506.03431. arXiv:1506.03431.
- ↑ Goodrich, Benjamin King, Wawro, Gregory and Katznelson, Ira, Designing Quantitative Historical Social Inquiry: An Introduction to Stan (2012). APSA 2012 Annual Meeting Paper. Available at SSRN 2105531
- ↑ Natanegara, Fanni; Neuenschwander, Beat; Seaman, John W.; Kinnersley, Nelson; Heilmann, Cory R.; Ohlssen, David; Rochester, George (2013). "The current state of Bayesian methods in medical product development: survey results and recommendations from the DIA Bayesian Scientific Working Group". Pharmaceutical Statistics. 13 (1): 3–12. doi:10.1002/pst.1595. ISSN 1539-1612.
Further reading
- Carpenter, Bob, Andrew Gelman, Matt Hoffman, Daniel Lee, Ben Goodrich, Michael Betancourt, Marcus Brubaker, Jiqiang Guo, Peter Li, and Allen Riddell. Stan: A probabilistic programming language, Journal of Statistical Software.
- Gelman, Andrew, Daniel Lee, and Jiqiang Guo (2015). Stan: A probabilistic programming language for Bayesian inference and optimization, Journal of Educational and Behavioral Statistics.
- Hoffman, Matthew D., Bob Carpenter, and Andrew Gelman (2012). Stan, scalable software for Bayesian modeling, Proceedings of the NIPS Workshop on Probabilistic Programming.
External links
- Stan web site
- Stan source, a Git repository hosted on GitHub