![]() | |
Original author(s) | Stan Development Team |
---|---|
Initial release | August 30, 2012 |
Stable release | |
Repository | |
Written in | C++ |
Operating system | Unix-like, Microsoft Windows, Mac OS X |
Platform | Intel x86 - 32-bit, x64 |
Type | 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 New BSD License. Stan is named in honour of Stanislaw Ulam, pioneer of the Monte Carlo method. [2]
Stan was created by a development team consisting of 52 members [3] that includes Andrew Gelman, Bob Carpenter, Daniel Lee, Ben Goodrich, and others.
A simple linear regression model can be described as , where . This can also be expressed as . The latter form can be written in Stan as the following:
data{int<lower=0>N;vector[N]x;vector[N]y;}parameters{realalpha;realbeta;real<lower=0>sigma;}model{y~normal(alpha+beta*x,sigma);}
The Stan language itself can be accessed through several interfaces:
In addition, higher-level interfaces are provided with packages using Stan as backend, primarily in the R language: [4]
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.
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.
Stan is used in fields including social science, [9] pharmaceutical statistics, [10] market research, [11] and medical imaging. [12]
{{cite journal}}
: Cite journal requires |journal=
(help)