Stan (software)
Original author(s) | Stan Development Team |
---|---|
Initial release | August 30, 2012 |
Stable release | 2.34.1[1]
/ 23 January 2024 |
Repository | |
Written in | Statistical package |
License | New BSD License |
Website | mc-stan |
Stan is a
probabilistic programming language for statistical inference written in C++.[2] The Stan language is used to specify a (Bayesian) statistical model with an imperative program calculating the log probability density function.[2]
Stan is licensed under the
Stanislaw Ulam, pioneer of the Monte Carlo method.[2]
Stan was created by a development team consisting of 34 members[3] that includes Andrew Gelman, Bob Carpenter, Matt Hoffman, and Daniel Lee.
Interfaces
The Stan language itself can be accessed through several interfaces:
- CmdStan – a command-line executable for the shell,
- CmdStanR and rstan – R software libraries,
- CmdStanPy and PyStan – libraries for the Python programming language,
- CmdStan.rb - library for the Ruby programming language,
- MatlabStan – integration with the MATLAB numerical computing environment,
- Stan.jl – integration with the Julia programming language,
- StataStan – integration with Stata.
In addition, higher-level interfaces are provided with packages using Stan as backend, primarily in the R language:[4]
- rstanarm provides a drop-in replacement for frequentist models provided by base R and lme4 using the R formula syntax;
- brms[5] provides a wide array of linear and nonlinear models using the R formula syntax;
- prophet provides automated procedures for time series forecasting.
Algorithms
Stan implements gradient-based
optimization
for penalized maximum likelihood estimation.
- MCMC algorithms:
- Hamiltonian Monte Carlo (HMC)
- No-U-Turn sampler[2][6] (NUTS), a variant of HMC and Stan's default MCMC engine
- Variational inference algorithms:
- Automatic Differentiation Variational Inference[7]
- Optimization algorithms:
- Limited-memory BFGS (Stan's default optimization algorithm)
- Broyden–Fletcher–Goldfarb–Shanno algorithm
- Laplace's approximation 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.[2] The automatic differentiation within Stan can be used outside of the probabilistic programming language.
Usage
Stan is used in fields including social science,
See also
- PyMC is a probabilistic programming language in Python
- ArviZ a Python library for Exploratory Analysis of Bayesian Models
References
- ^ "Release 2.34.1". 23 January 2024. Retrieved 20 February 2024.
- ^ a b c d e Stan Development Team. 2015. Stan Modeling Language User's Guide and Reference Manual, Version 2.9.0
- ^ "Development Team". stan-dev.github.io. Retrieved 2018-07-25.
- ^ Gabry, Jonah. "The current state of the Stan ecosystem in R". Statistical Modeling, Causal Inference, and Social Science. Retrieved 25 August 2020.
- ^ "BRMS: Bayesian Regression Models using 'Stan'". 23 August 2021.
- ^ 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.
- )
- SSRN 2105531
- S2CID 19738522.
- ^ Feit, Elea (15 May 2017). "Using Stan to Estimate Hierarchical Bayes Models". Retrieved 19 March 2019.
- PMID 31840442.
Further reading
- Carpenter, Bob; Gelman, Andrew; Hoffman, Matthew; Lee, Daniel; Goodrich, Ben; Betancourt, Michael; Brubaker, Marcus; Guo, Jiqiang; Li, Peter; Riddell, Allen (2017). "Stan: A Probabilistic Programming Language". Journal of Statistical Software. 76 (1): 1–32. PMID 36568334.
- 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 Archived 2015-01-21 at the Wayback Machine, Proceedings of the NIPS Workshop on Probabilistic Programming.
External links
- Stan web site
- Stan source, a Git repository hosted on GitHub