11.6.2.5. Initialising the process
As already explained in [Bla17], the MCMC algorithm starts at a given point and then
moves to a new configuration. This means that two things must be specified for each parameter:
a starting value, and a variation range used to move to the next location. Since all the input
parameters are stochastic (in other words, instances of classes inheriting from TStochasticAttribute), the default values are
randomly drawn for the starting point;
the theoretical standard deviation used as the variation range.
The default behaviour can easily be overridden by calling the setStartingPoints and the setProposalStd methods with
these prototypes:
// Prototype setStartingPoints
void setStartingPoints(int ichain, vector<double> values);
// Prototype setProposalStd
void setProposalStd(int ichain, vector<double> standDev);
The first argument of both prototypes is the chain index, an integer between \(-1\) and \(n_C-1\), where \(n_C\) is the number of chains (indexed from \(0\) to \(n_C -1\)). If \(-1\) is chosen, all chains will be assigned the same starting point (not recommended, since the purpose of using multiple chains is to initialise them at different locations to verify convergence toward the same region) or the same standard deviation.
The second argument of both prototypes is a vector containing either the initial values of the starting points (one value for each parameter to calibrate) or the standard deviations (one for each parameter), which will be assigned to the corresponding chain. This means that the vectors must have a size \(p\), corresponding to the number of parameters.