Stan (software)
Original author(s) | Stan Development Team |
---|---|
Initial release | August 30, 2012 |
Stable release | 2.9.0 / December 4, 2015 |
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)
- BFGS
- 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". 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: http://ssrn.com/abstract=2105531
- ↑ Natanegara, Fanni and Neuenschwander, Beat and Seaman, John W. and Kinnersley, Nelson and Heilmann, Cory R. and Ohlssen, David and 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: n/a. doi:10.1002/pst.1595. ISSN 1539-1612.
Literature
- Hoffman, Matthew D., Bob Carpenter, and Andrew Gelman (2012). Stan, scalable software for Bayesian modeling, Proceedings of the NIPS Workshop on Probabilistic Programming.
- Gelman, Andrew, Daniel Lee, and Jiqiang Guo (2015). Stan: A probabilistic programming language for Bayesian inference and optimization, Journal of Educational and Behavioral Statistics.
- 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.
External links
- Stan web site
- Stan source, a Git repository hosted on GitHub
|