I have a very noisy/multimodal likelihood function for a 6-parameter model. The popular emcee sampler fails miserably (no matter how many chains I use and for how long I run them, they always get stuck in local minima), but its parallel-tempered version ptemcee[*] does a pretty decent job.

Although the results are good (judged by reasonably mixed chains, and acceptable autocorrelation and effective sample size values), the acceptance rate for the cold chain is extremely low. Usually, it starts at around 30% (burn-in stage) and drops rapidly below 1%.

I've tried increasing the number of temperatures, increasing the number of chains, turning the adaptive temperature adjustment on/off, and running the sampler until the autocorrelation time drops below N/100 (where N is the length of the chains; this is a reasonable "convergence" criteria according to the emcee developer). Nothing seems to work.

My question is then: how worried should I be that the acceptance rate is so low? I'm particularly concerned about how (if) this affects my "convergence" criteria (autocorr time < N/100).

[*]: ptemcee can be described as an:

algorithm for dynamically adapting the temperature configuration of a sampler while sampling. This algorithm dynamically adjusts the temperature spacing to achieve a uniform rate of exchanges between chains at neighbouring temperatures.


1 Answer 1


The rejection rate is only indirectly linked to convergence. Broadly speaking, diagnostics such as the rejection rate or autocorrelation plots tell you about whether your MCMC works efficiently, while convergence diagnostics and visual inspections of the trace tell you if your sampler has converged.

If you have high rejection rate, the sampler will take longer to converge, but if your diagnostics indicate convergence (despite high rejection rate), there is no more reason to doubt that than in a case of low rejection rate. So, the answer to your question is: no, the acceptance rate does not affect the reliability of standard convergence criteria.

As a side note - have you tried the BayesianTools R package (disclaimer - I'm one of the developers) - I wouldn't be surprised if the differential evolution samplers in this package (default) would work better for your problem.

  • $\begingroup$ Thank you Florian. My model (all my setup) is entirely written in Python and depends on some rather complicated synthetic data procedure, so using R is not trivial to me. I have tried the differential evolution and DE with snooker moves in the latest RC of emcee and both failed. $\endgroup$
    – Gabriel
    Oct 9, 2018 at 17:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.