The Ensemble package implements in Julia various stochastic samplers based on the "stretch move" for ensembles of walkers described by Goodman & Weare (2010), and popularised in the emcee package from Foreman-Mackey, et al (2013).
In addition to a basic implementation of the Goodman & Weare MCMC
algorithm in the EnsembleSampler module, this algorithm forms the
basis of a number of other stochastic sampling algorithms:
-
A nested sampling algorithm based around the stretch move from Goodman & Weare in
EnsembleNest. -
A combination MCMC/Gibbs sampling method in
EnsembleGibbs. -
A parallel-tempered MCMC (PTMCMC) in
EnsemblePTSamplerthat automatically tunes the chain temperature following an algorithm similar to Vousden, Farr, & Mandel (2016). -
A bare-bones implementation of the
kombinesampler described in Farr & Farr (in prep) inEnesmbleKombine. This module is missing the automatic burnin determination and the bells-and-whistles from the Python package described in that paper, but is a fully-functional multi-modal KDE sampler. -
Various support libraries for stochastic sampling with these packages:
-
Computation of autocorrelation lengths following the spirit, if not the algorithm, of Goodman's implementation of Sokal's definition of the autocorrelation length in the module
Acor. -
Various useful re-parameterisations of constrained parameters to remove the constraints in the
Parameterizationsmodule. Most of these are taken from the Stan Users Manual. -
A basic Powell's method optimiser in the
Optimizemodule. -
A stable implementation of the
logsumexpfunction in theStatsmodule.
-
The Ensemble module exports these various sub-modules as top-level identifiers.