I am considering an approach to adaptive approximate Bayesian computation technique (ABC). The acceptance rejection algorithm is used wherein proposals from the prior are accepted if the simulated data $X_\text{sim}$ matches the observed data $X_\text{data}$:

\begin{equation} \rho(X_\text{sim},X_\text{data}) < \epsilon \end{equation}

Where $\rho(.)$ is some distance function and $\epsilon$ is the tolerance factor. The aim is to find the value of the tolerance factor $\epsilon$ so that the rate of acceptance $\alpha$ matches some target acceptance rate $\alpha_0$.

Essentially the problem is to find $\epsilon = \epsilon_0$ such that $\mathbb{E}[\alpha] = \alpha_0$.

My approach is to model the acceptances of the algorithm as a Bernoulli process where $\alpha$ is the probability of acceptance.

  1. Choose the shape parameters of the beta prior distribution of the acceptance rate $\alpha$.
  2. For each run of the acceptance-rejection algorithm update the posterior distribution of $\alpha$. Then draw a random sample from the posterior distribution of $\alpha$. If $\alpha$ is lower than the target $\alpha_0$ then $\epsilon$ should be increased. If $\alpha$ is higher than $\alpha_0$ then $\epsilon$ should be decreased.

The question is how should the changes to $\epsilon$ be proposed. My feeling is that $\epsilon$ should also have a prior and posterior distribution. Perhaps a model should be proposed for the relationship between these two parameters? Any suggestions on this problem would be appreciated. Additionally has this approach been considered before in the literature (if so please post a link)?


1 Answer 1


The classical answer in the ABC literature to this approach is to simulate pseudo-samples from the prior predictive and to set $\epsilon$ to the $\alpha$-quantile of the corresponding distances. I find it difficult to see how an adaptive approach could be more efficient there.

  • $\begingroup$ I suppose the idea is that $\epsilon$ from the pseudo-samples may be inaccurate and as the ABC algorithm begins to run it becomes apparent that the acceptance rate is different from the target acceptance rate. The question is whether this difference is significant enough to justify updating $\epsilon$ every run of the algorithm. $\endgroup$
    – egg
    Commented Jul 20, 2017 at 13:42
  • $\begingroup$ My apologies let me try to rephrase. It is impossible to exactly determine $\epsilon$ that will exactly result in a target acceptance rate $\alpha_0$. Consequently the acceptance rate $\alpha$ will always deviate from the target acceptance rate $\alpha_0$ (possibly to an insignificant extent but that is a subjective assessment). In order to minimise this deviation between the target and actual acceptance rates the value of $\epsilon$ is altered as the algorithm runs so that the different between the target and actual acceptance rate is minimised. $\endgroup$
    – egg
    Commented Jul 20, 2017 at 13:49
  • $\begingroup$ One could certainly question the purpose of reaching a specific target acceptance rate $\alpha_0$. There is no theoretical result in the ABC literature about an optimal acceptance rate. At best, there are optimal convergence speeds as the sample size [of the data, not of the number of simulations] increases. $\endgroup$
    – Xi'an
    Commented Jul 20, 2017 at 13:52
  • $\begingroup$ Furthermore, the usual [accept-reject] implementation of ABC is to run a massive number of simulations and then cull those simulations by selection an $\epsilon$ value (or an acceptance rate). In this setting, the value of $\epsilon$ has of course no impact on the simulation. $\endgroup$
    – Xi'an
    Commented Jul 20, 2017 at 13:53
  • 1
    $\begingroup$ This highlights my misunderstanding. I did not realise $\epsilon$ could be chosen after the simulation. Thank you for your help. $\endgroup$
    – egg
    Commented Jul 20, 2017 at 13:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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