What is the BIE?
The BIE is, funadmentally, a object-oriented classes library of tools written in C++ that allow the user to put together a Markov Chain Monte Carlo simulation for Bayesian inference.
If you do not know what object-oriented means, think of plumbing kit that comes with different sized pipes, fittings, fixtures, etc. The different objects (in the code and in the plumbing kit) have to both fit together and maintain the flow in order to function.
To facilitate "what if" exploration, we provide a command line interface (written with Bison and Flex) that will run input scripts. This is similar to gnuplot. Behind the scenes is a mechanism that knows about and enforces the object-oriented hierarchy (the fitting together of the different objects).
The output of the code is a simulation of the Bayesian posterior distribution. In terms of a parameter estimate, the posterior distribution the probability of some parameter vector
given some pile of data
:
. From this distribution, we can compute summary statistics e.g. by taking moments, or determine confidence intervals and so forth. All of these quantities are fundamentally integrals and the Markov Chain approach produces variates
distributed acoording to
so moments are trivally obtained by summing of the ensemble of variates.
The BIE provides a diverse number opitions for a Bayesian simulation:
-
Prior distributions;
-
Markov Chain Monte Carlo algorithms with associated convergence statistics;
-
Likelihood functions (binned, point, and user-defined) both for serial and parallel use); and
-
General input and output streams for handling data.
The BIE provides a Model class from which all of your the models you wish to investigate will be derived. This is not as daunting as it sounds and the base code contains a number of simple and more complex examples for you to study. If you can write some C code, you can incorporate your model.
Alternatively, you way write your own likelihood function that incorporates both your model and your data. For a data in a specialized form, this approach might be the easiest, see GaussTestLikelihoodFunction for a simple example.