A sampler using adaptive differential evolution proposals.

This is a standalone julia version of the Adaptive Differential Ensemble MCMC sampler as prosed in Ensemble MCMC Sampling for Robust Bayesian Inference <https://gregorboehl.com/live/ademc_boehl.pdf>_.

CreateDIMETestFunc(ndim::Int, weight::Float, distance::Float, scale::Float)

Create a trimodal Gaussian mixture for testing.

DIMETestFuncMarginalPDF(x::Array, cov_scale::Float, distance::Float, weight::Float)

Get the marginal PDF over the first dimension of the test distribution.

DIMESampler(lprobFunc::Function, init::Array, niter::Int; sigma::Float64=1e-5, gamma=nothing, aimh_prob::Float64=0.05, nsamples_proposal_dist=nothing, df_proposal_dist::Int=10, progress::Bool=true)


  • lprobFunc::Function: the likelihood function to be sampled. Expected to be vectorized.
  • init::Array: the initial ensemble. Used to infer the number of chains and the dimensionality of lprobFunc. A rule of thumb for the number of chains is :math:nchain = 5*ndim.
  • niter::Int: the number of iterations to be run.
  • sigma::Float=1e-5: the standard deviation of the Gaussian used to stretch the proposal vector.
  • gamma::Float=nothing: the mean stretch factor for the proposal vector. By default, it is $2.38 / \sqrt{2\,\mathrm{ndim}}$ as recommended by ter Braak (2006) <http://www.stat.columbia.edu/~gelman/stuff_for_blog/cajo.pdf>_.
  • aimh_prob::Float=0.1: the probability to draw a AIMH proposal.
  • df_proposal_dist::Float=10: the degrees of freedom of the multivariate t distribution used for AIMH proposals.