11.5. Approximate Bayesian Computation techniques (ABC)
This section covers methods grouped under the acronym ABC, which stands for Approximate Bayesian Computation. The core idea is to perform Bayesian inference without explicitly evaluating the model likelihood function. For this reason, these methods are also refered to as likelihood-free algorithms [Wil13].
As a reminder, the principle of the Bayesian approach is summarized in the equation \( \pi_{post} (\theta|\mathbf{y}) = \frac{L(\mathbf{y}|\theta) \pi_{prior} (\theta)} {\pi(\mathbf{y})} \propto L(\mathbf{y}|\theta) \pi_{prior} (\theta),\) where \(L(\mathbf{y}|\theta)\) is the conditional probability of the observations given the parameter values \(\theta\), \(\pi_{prior}(\theta)\) is the a priori probability density of \(\theta\) (the prior), and \(\pi(\mathbf{y})\) is the marginal likelihood of the observations, which is constant . For more details see [Bla17].
From a technical perspective, the methods in this section inherit from the TABC class (which
itself inherits from TCalibration, in order to benefit from all standard
features). Currently, the only implemented ABC method is the Rejection algorithm, presented in [Bla17], whose
implementation is provided through the TRejectionABC class described below.
The usage of the TRejectionABC class can be summarised in a few key steps:
Prepare the data and the model:
The parameters to be calibrated must be instances of classes inheriting from
TStochasticAttribute;Select the assessor type and construct the
TRejectionABCobject with the appropriate distance function (see Constructing the TRejectionABC object).
Set the algorithm properties:
Define optional behaviours;
Specify the uncertainty hypotheses via the dedicated methods (see Defining the TRejectionABC properties).
Perform the estimate and analyse the results:
Run the estimate process;
Extract the results and visualise them with the standard plotting tools (see Looking at the results).
An example is also provided in the use-case section (see Macro “calibrationRejectionABCFlowrate1D.py”).