RandomWalkMetropolisHastings¶

class
RandomWalkMetropolisHastings
(*args)¶ Random Walk MetropolisHastings method.
 Available constructor:
RandomWalkMetropolisHastings(prior, conditional, observations, initialState, proposal)
RandomWalkMetropolisHastings(prior, conditional, model, parameters, observations, initialState, proposal)
Parameters: prior :
Distribution
Prior distribution of the parameters of the underlying Bayesian statistical model.
conditional :
Distribution
Required distribution to define the likelihood of the underlying Bayesian statistical model.
model :
Function
Function required to define the likelihood.
observations : 2d sequence of float
Observations required to define the likelihood.
initialState : sequence of float
Initial state of the MonteCarlo Markov chain on which the Sampler is based.
parameters : 2d sequence of float
Parameters of the model to be fixed.
proposal : list of
Distribution
Distributions from which the transition kernels of the
MCMC
are defined, as explained hereafter. In the following of this paragraph, means that the realization is obtained according to the Distribution of the list proposal of size . The underlying MCMC algorithm is a MetropolisHastings one which draws candidates (for the next state of the chain) using a random walk: from the current state , the candidate for can be expressed as where the distribution of does not depend on . More precisely, here, during the MetropolisHastings iteration, only the component of , with , is not zero and where is a deterministic scalar calibration coefficient and where . Moreover, by default, but adaptive strategy based on the acceptance rate of each component can be defined using the methodsetCalibrationStrategyPerComponent()
.Notes
A RandomWalkMetropolisHastings enables to carry out
MCMC
sampling according to the preceding statements. It is important to note that sampling one new realization comes to carrying out Metropolis Hastings iterations (such as described above): all of the components of the new realization can differ from the corresponding components of the previous realization. Besides, the burnin and thinning parameters do not take into consideration the number of MCMC iterations indeed, but the number of sampled realizations.Examples
>>> import openturns as ot >>> ot.RandomGenerator.SetSeed(0) >>> chainDim = 3 >>> # Observations >>> obsDim = 1 >>> obsSize = 10 >>> y = [9.50794871493506, 3.83296694500105, 2.44545713047953, ... 0.0803625289211318, 1.01898069723583, 0.661725805623086, ... 1.57581204592385, 2.95308465670895, 8.8878164296758, ... 13.0812290405651] >>> y_obs = ot.Sample(y, obsDim) >>> # Parameters >>> p = ot.Sample(obsSize, chainDim) >>> for i in range(obsSize): ... for j in range(chainDim): ... p[i, j] = (2 + 5.0 * i / 9.0) ** j >>> # Model >>> fullModel = ot.SymbolicFunction( ... ['p1', 'p2', 'p3', 'x1', 'x2', 'x3'], ... ['p1*x1+p2*x2+p3*x3', '1.0']) >>> parametersSet = range(chainDim) >>> parametersValue = [0.0] * len(parametersSet) >>> model = ot.ParametricFunction(fullModel, parametersSet, parametersValue) >>> # Calibration parameters >>> calibrationColl = [ot.CalibrationStrategy()]*chainDim >>> # Proposal distribution >>> proposalColl = [ot.Uniform(1.0, 1.0)]*chainDim >>> # Prior distribution >>> sigma0 = [10.0]*chainDim >>> # Covariance matrix >>> Q0_inv = ot.CorrelationMatrix(chainDim) >>> for i in range(chainDim): ... Q0_inv[i, i] = sigma0[i] * sigma0[i] >>> mu0 = [0.0]*chainDim >>> # x0 ~ N(mu0, sigma0) >>> prior = ot.Normal(mu0, Q0_inv) >>> # Conditional distribution y~N(z, 1.0) >>> conditional = ot.Normal() >>> # Create a metropolishastings sampler >>> # prior =a distribution of dimension chainDim, the a priori distribution of the parameter >>> # conditional =a distribution of dimension 1, the observation error on the output >>> # model =the link between the parameters and the output >>> # y_obs =noisy observations of the output >>> # mu0 =starting point of the chain >>> sampler = ot.RandomWalkMetropolisHastings( ... prior, conditional, model, p, y_obs, mu0, proposalColl) >>> sampler.setCalibrationStrategyPerComponent(calibrationColl) >>> sampler.setBurnIn(200) >>> sampler.setThinning(10) >>> # Get a realization >>> print(sampler.getRealization()) [1.22816,1.0049,1.99008]
Methods
computeLogLikelihood
(currentState)Compute the logarithm of the likelihood w.r.t. getAcceptanceRate
()Get acceptance rate. getBurnIn
()Get the length of the burnin period. getCalibrationStrategyPerComponent
()Get the calibration strategy per component. getClassName
()Accessor to the object’s name. getConditional
()Get the conditional distribution. getDimension
()Get the dimension of the samples generated. getHistory
()Get the history storage. getId
()Accessor to the object’s id. getModel
()Get the model. getName
()Accessor to the object’s name. getNonRejectedComponents
()Get the components to be always accepted. getObservations
()Get the observations. getParameters
()Get the parameters. getPrior
()Get the prior distribution. getProposal
()Get the proposal. getRealization
()Return a realization. getSample
(size)Return several realizations. getShadowedId
()Accessor to the object’s shadowed id. getThinning
()Get the thinning parameter. getVerbose
()Tell whether the verbose mode is activated or not. getVisibility
()Accessor to the object’s visibility state. hasName
()Test if the object is named. hasVisibleName
()Test if the object has a distinguishable name. setBurnIn
(burnIn)Set the length of the burnin period. setCalibrationStrategy
(calibrationStrategy)Set the calibration strategy. setCalibrationStrategyPerComponent
(...)Set the calibration strategy per component. setHistory
(strategy)Set the history storage. setName
(name)Accessor to the object’s name. setNonRejectedComponents
(nonRejectedComponents)Set the components to be always accepted. setObservations
(observations)Set the observations. setParameters
(parameters)Set the parameters. setPrior
(prior)Set the prior distribution. setProposal
(proposal)Set the proposal. setShadowedId
(id)Accessor to the object’s shadowed id. setThinning
(thinning)Set the thinning parameter. setVerbose
(verbose)Set the verbose mode. setVisibility
(visible)Accessor to the object’s visibility state. 
__init__
(*args)¶

computeLogLikelihood
(currentState)¶ Compute the logarithm of the likelihood w.r.t. observations.
Parameters: currentState : sequence of float
Current state.
Returns: logLikelihood : float
Logarithm of the likelihood w.r.t. observations .

getAcceptanceRate
()¶ Get acceptance rate.
Returns: acceptanceRate :
Point
of dimensionSequence whose the component corresponds to the acceptance rate of the candidates obtained from a state by only changing its component, that is to the acceptance rate only relative to the MCMC iterations such that (see the paragraph dedicated to the constructors of the class above). These are global acceptance rates over all the MCMC iterations performed.

getBurnIn
()¶ Get the length of the burnin period.
Returns: lenght : int
Length of the burnin period, that is the number of first iterates of the MCMC chain which will be thrown away when generating the sample.

getCalibrationStrategyPerComponent
()¶ Get the calibration strategy per component.
Returns: strategy : list of
CalibrationStrategy
A list of CalibrationStrategy strategy, whose component defines whether and how the (see the paragraph dedicated to the constructors of the class above) are rescaled, on the basis of the last component acceptance rate . The calibration coefficients are rescaled every MCMC iterations with , thus on the basis of the acceptances or refusals of the last candidates obtained by only changing the component of the current state: where is defined by .

getClassName
()¶ Accessor to the object’s name.
Returns: class_name : str
The object class name (object.__class__.__name__).

getConditional
()¶ Get the conditional distribution.
Returns: conditional :
Distribution
Distribution taken into account in the definition of the likelihood, whose PDF with parameters corresponds to in the equations of the target distribution’s PDF.

getDimension
()¶ Get the dimension of the samples generated.
Returns: dimension : int
Dimension of the samples that the Sampler can generate.

getHistory
()¶ Get the history storage.
Returns: history :
HistoryStrategy
Used to record the chain.

getId
()¶ Accessor to the object’s id.
Returns: id : int
Internal unique identifier.

getModel
()¶ Get the model.
Returns: model :
Function
Model take into account in the definition of the likelihood, which corresponds to , that is the functions () in the equation of the target distribution’s PDF.

getName
()¶ Accessor to the object’s name.
Returns: name : str
The name of the object.

getNonRejectedComponents
()¶ Get the components to be always accepted.
Returns: nonRejectedComponents :
Indices
The indices of the components that are not tuned, and sampled according to the prior distribution in order to take into account the intrinsic uncertainty, as opposed to the epistemic uncertainty corresponding to the tuned variables.

getObservations
()¶ Get the observations.
Returns: observations :
Sample
Sample taken into account in the definition of the likelihood, which corresponds to the tuple of the () in equations of the target distribution’s PDF.

getParameters
()¶ Get the parameters.
Returns: parameters :
Point
Fixed parameters of the model required to define the likelihood.

getPrior
()¶ Get the prior distribution.
Returns: prior :
Distribution
The prior distribution of the parameter of the underlying Bayesian statistical model, whose PDF corresponds to in the equations of the target distribution’s PDF.

getProposal
()¶ Get the proposal.
Returns: proposal : list of
Distribution
The tuple of Distributions from which the transition kernels of the random walk MetropolisHastings algorithm are defined; look at the paragraph dedicated to the constructors of the class above.

getSample
(size)¶ Return several realizations.
Parameters: size : int,
Number of realizations needed.
Returns: realizations :
Sample
Sequence composed of size new realizations.

getShadowedId
()¶ Accessor to the object’s shadowed id.
Returns: id : int
Internal unique identifier.

getThinning
()¶ Get the thinning parameter.
Returns: thinning : int
Thinning parameter: storing only every point after the burnin period.
Notes
When generating a sample of size , the number of MCMC iterations performed is where is the burnin period length and the thinning parameter.

getVerbose
()¶ Tell whether the verbose mode is activated or not.
Returns: isVerbose : bool
The verbose mode is activated if it is True, desactivated otherwise.

getVisibility
()¶ Accessor to the object’s visibility state.
Returns: visible : bool
Visibility flag.

hasName
()¶ Test if the object is named.
Returns: hasName : bool
True if the name is not empty.

hasVisibleName
()¶ Test if the object has a distinguishable name.
Returns: hasVisibleName : bool
True if the name is not empty and not the default one.

setBurnIn
(burnIn)¶ Set the length of the burnin period.
Parameters: lenght : int
Length of the burnin period, that is the number of first iterates of the MCMC chain which will be thrown away when generating the sample.

setCalibrationStrategy
(calibrationStrategy)¶ Set the calibration strategy.
Parameters: strategy :
CalibrationStrategy
Same strategy applied for each component .
See also

setCalibrationStrategyPerComponent
(calibrationStrategy)¶ Set the calibration strategy per component.
Parameters: strategy : list of
CalibrationStrategy
A list of CalibrationStrategy strategy, whose component defines whether and how the (see the paragraph dedicated to the constructors of the class above) are rescaled, on the basis of the last component acceptance rate . The calibration coefficients are rescaled every MCMC iterations with , thus on the basis of the acceptances or refusals of the last candidates obtained by only changing the component of the current state: where is defined by .

setHistory
(strategy)¶ Set the history storage.
Parameters: history :
HistoryStrategy
Used to record the chain.

setName
(name)¶ Accessor to the object’s name.
Parameters: name : str
The name of the object.

setNonRejectedComponents
(nonRejectedComponents)¶ Set the components to be always accepted.
Parameters: nonRejectedComponents : sequence of int
The indices of the components that are not tuned, and sampled according to the prior distribution in order to take into account the intrinsic uncertainty, as opposed to the epistemic uncertainty corresponding to the tuned variables.

setObservations
(observations)¶ Set the observations.
Parameters: observations : 2d sequence of float
Sample taken into account in the definition of the likelihood, which corresponds to the tuple of the () in the equations of the target distribution’s PDF.

setParameters
(parameters)¶ Set the parameters.
Parameters: parameters : sequence of float
Fixed parameters of the model required to define the likelihood.

setPrior
(prior)¶ Set the prior distribution.
Parameters: prior :
Distribution
The prior distribution of the parameter of the underlying Bayesian statistical model, whose PDF corresponds to in the equations of the target distribution’s PDF.

setProposal
(proposal)¶ Set the proposal.
Parameters: proposal : list of
Distribution
The tuple of Distributions from which the transition kernels of the random walk MetropolisHastings algorithm are defined; look at the paragraph dedicated to the constructors of the class above.

setShadowedId
(id)¶ Accessor to the object’s shadowed id.
Parameters: id : int
Internal unique identifier.

setThinning
(thinning)¶ Set the thinning parameter.
Parameters: thinning : int,
Thinning parameter: storing only every point after the burnin period.
Notes
When generating a sample of size , the number of MCMC iterations performed is where is the burnin period length and the thinning parameter.

setVerbose
(verbose)¶ Set the verbose mode.
Parameters: isVerbose : bool
The verbose mode is activated if it is True, desactivated otherwise.

setVisibility
(visible)¶ Accessor to the object’s visibility state.
Parameters: visible : bool
Visibility flag.