Stan (software)
Stan is a probabilistic programming language for statistical inference written in C++. The Stan language is used to specify a statistical model with an imperative program calculating the log probability density function.
Stan is licensed under the New BSD License. Stan is named in honour of Stanislaw Ulam, pioneer of the Monte Carlo method.
Stan was created by a development team consisting of 52 members that includes Andrew Gelman, Bob Carpenter, Daniel Lee, Ben Goodrich, and others.
Example
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
parameters
model
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.
- Stan Playground - online at
Algorithms
Stan implements gradient-based Markov chain Monte Carlo 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:
- * Hamiltonian Monte Carlo
- * No-U-Turn sampler, a variant of HMC and Stan's default MCMC engine
- Variational inference algorithms:
- * Automatic Differentiation Variational Inference
- * Pathfinder: Parallel quasi-Newton variational inference
- Optimization algorithms:
- * Limited-memory BFGS
- * Broyden–Fletcher–Goldfarb–Shanno algorithm
- * Laplace's approximation for classical standard error estimates and approximate Bayesian posteriors