RandomWalkMetropolisHastings¶

class
RandomWalkMetropolisHastings
(*args)¶ Random Walk MetropolisHastings method.
Refer to Bayesian calibration, The MetropolisHastings Algorithm.
 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.
 observations2d sequence of float
Observations required to define the likelihood.
 initialStatesequence of float
Initial state of the MonteCarlo Markov chain on which the Sampler is based.
 parameters2d sequence of float
Parameters of the model to be fixed.
 proposallist 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()
.
 prior
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]
 Attributes
thisown
The membership flag
Methods
computeLogLikelihood
(currentState)Compute the logarithm of the likelihood w.r.t.
Get acceptance rate.
Accessor to the antecedent RandomVector in case of a composite RandomVector.
Get the length of the burnin period.
Get the calibration strategy per component.
Accessor to the object’s name.
Get the conditional distribution.
Accessor to the covariance of the RandomVector.
Accessor to the description of the RandomVector.
Accessor to the dimension of the RandomVector.
Accessor to the distribution of the RandomVector.
Accessor to the domain of the Event.
Accessor to the Function in case of a composite RandomVector.
Get the history storage.
getId
()Accessor to the object’s id.
getMarginal
(*args)Get the random vector corresponding to the marginal component(s).
getMean
()Accessor to the mean of the RandomVector.
getModel
()Get the model.
getName
()Accessor to the object’s name.
Get the components to be always accepted.
Get the observations.
Accessor to the comparaison operator of the Event.
Accessor to the parameter of the distribution.
Accessor to the parameter description of the distribution.
Get the parameters.
getPrior
()Get the prior distribution.
Get the stochastic process.
Get the proposal.
Compute one realization of the RandomVector.
getSample
(size)Compute realizations of the RandomVector.
Accessor to the object’s shadowed id.
Get the thinning parameter.
Accessor to the threshold of the Event.
Tell whether the verbose mode is activated or not.
Accessor to the object’s visibility state.
hasName
()Test if the object is named.
Test if the object has a distinguishable name.
Accessor to know if the RandomVector is a composite one.
setBurnIn
(burnIn)Set the length of the burnin period.
setCalibrationStrategy
(calibrationStrategy)Set the calibration strategy.
Set the calibration strategy per component.
setDescription
(description)Accessor to the description of the RandomVector.
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.
setParameter
(parameters)Accessor to the parameter of the distribution.
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.

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

getAcceptanceRate
()¶ Get acceptance rate.
 Returns
 acceptanceRate
Point
of dimension Sequence 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.
 acceptanceRate

getAntecedent
()¶ Accessor to the antecedent RandomVector in case of a composite RandomVector.
 Returns
 antecedent
RandomVector
Antecedent RandomVector in case of a
CompositeRandomVector
such as: .
 antecedent

getBurnIn
()¶ Get the length of the burnin period.
 Returns
 lenghtint
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
 strategylist 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 .
 strategylist of

getClassName
()¶ Accessor to the object’s name.
 Returns
 class_namestr
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.
 conditional

getCovariance
()¶ Accessor to the covariance of the RandomVector.
 Returns
 covariance
CovarianceMatrix
Covariance of the considered
UsualRandomVector
.
 covariance
Examples
>>> import openturns as ot >>> distribution = ot.Normal([0.0, 0.5], [1.0, 1.5], ot.CorrelationMatrix(2)) >>> randomVector = ot.RandomVector(distribution) >>> ot.RandomGenerator.SetSeed(0) >>> print(randomVector.getCovariance()) [[ 1 0 ] [ 0 2.25 ]]

getDescription
()¶ Accessor to the description of the RandomVector.
 Returns
 description
Description
Describes the components of the RandomVector.
 description

getDimension
()¶ Accessor to the dimension of the RandomVector.
 Returns
 dimensionpositive int
Dimension of the RandomVector.

getDistribution
()¶ Accessor to the distribution of the RandomVector.
 Returns
 distribution
Distribution
Distribution of the considered
UsualRandomVector
.
 distribution
Examples
>>> import openturns as ot >>> distribution = ot.Normal([0.0, 0.0], [1.0, 1.0], ot.CorrelationMatrix(2)) >>> randomVector = ot.RandomVector(distribution) >>> ot.RandomGenerator.SetSeed(0) >>> print(randomVector.getDistribution()) Normal(mu = [0,0], sigma = [1,1], R = [[ 1 0 ] [ 0 1 ]])

getDomain
()¶ Accessor to the domain of the Event.
 Returns
 domain
Domain
Describes the domain of an event.
 domain

getFunction
()¶ Accessor to the Function in case of a composite RandomVector.
 Returns
 function
Function
Function used to define a
CompositeRandomVector
as the image through this function of the antecedent : .
 function

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

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

getMarginal
(*args)¶ Get the random vector corresponding to the marginal component(s).
 Parameters
 iint or list of ints,
Indicates the component(s) concerned. is the dimension of the RandomVector.
 Returns
 vector
RandomVector
RandomVector restricted to the concerned components.
 vector
Notes
Let’s note a random vector and a set of indices. If is a
UsualRandomVector
, the subvector is defined by . If is aCompositeRandomVector
, defined by with , some scalar functions, the subvector is .Examples
>>> import openturns as ot >>> distribution = ot.Normal([0.0, 0.0], [1.0, 1.0], ot.CorrelationMatrix(2)) >>> randomVector = ot.RandomVector(distribution) >>> ot.RandomGenerator.SetSeed(0) >>> print(randomVector.getMarginal(1).getRealization()) [0.608202] >>> print(randomVector.getMarginal(1).getDistribution()) Normal(mu = 0, sigma = 1)

getMean
()¶ Accessor to the mean of the RandomVector.
 Returns
 mean
Point
Mean of the considered
UsualRandomVector
.
 mean
Examples
>>> import openturns as ot >>> distribution = ot.Normal([0.0, 0.5], [1.0, 1.5], ot.CorrelationMatrix(2)) >>> randomVector = ot.RandomVector(distribution) >>> ot.RandomGenerator.SetSeed(0) >>> print(randomVector.getMean()) [0,0.5]

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.
 model

getName
()¶ Accessor to the object’s name.
 Returns
 namestr
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.
 nonRejectedComponents

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.
 observations

getOperator
()¶ Accessor to the comparaison operator of the Event.
 Returns
 operator
ComparisonOperator
Comparaison operator used to define the
Event
.
 operator

getParameter
()¶ Accessor to the parameter of the distribution.
 Returns
 parameter
Point
Parameter values.
 parameter

getParameterDescription
()¶ Accessor to the parameter description of the distribution.
 Returns
 description
Description
Parameter names.
 description

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

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.
 prior

getProcess
()¶ Get the stochastic process.

getProposal
()¶ Get the proposal.
 Returns
 proposallist 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.
 proposallist of

getRealization
()¶ Compute one realization of the RandomVector.
 Returns
 aRealization
Point
Sequence of values randomly determined from the RandomVector definition. In the case of an event: one realization of the event (considered as a Bernoulli variable) which is a boolean value (1 for the realization of the event and 0 else).
 aRealization
See also
Examples
>>> import openturns as ot >>> distribution = ot.Normal([0.0, 0.0], [1.0, 1.0], ot.CorrelationMatrix(2)) >>> randomVector = ot.RandomVector(distribution) >>> ot.RandomGenerator.SetSeed(0) >>> print(randomVector.getRealization()) [0.608202,1.26617] >>> print(randomVector.getRealization()) [0.438266,1.20548]

getSample
(size)¶ Compute realizations of the RandomVector.
 Parameters
 nint,
Number of realizations needed.
 Returns
 realizations
Sample
n sequences of values randomly determined from the RandomVector definition. In the case of an event: n realizations of the event (considered as a Bernoulli variable) which are boolean values (1 for the realization of the event and 0 else).
 realizations
See also
Examples
>>> import openturns as ot >>> distribution = ot.Normal([0.0, 0.0], [1.0, 1.0], ot.CorrelationMatrix(2)) >>> randomVector = ot.RandomVector(distribution) >>> ot.RandomGenerator.SetSeed(0) >>> print(randomVector.getSample(3)) [ X0 X1 ] 0 : [ 0.608202 1.26617 ] 1 : [ 0.438266 1.20548 ] 2 : [ 2.18139 0.350042 ]

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

getThinning
()¶ Get the thinning parameter.
 Returns
 thinningint
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.

getThreshold
()¶ Accessor to the threshold of the Event.
 Returns
 thresholdfloat
Threshold of the
Event
.

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

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

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

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

isComposite
()¶ Accessor to know if the RandomVector is a composite one.
 Returns
 isCompositebool
Indicates if the RandomVector is of type Composite or not.

setBurnIn
(burnIn)¶ Set the length of the burnin period.
 Parameters
 lenghtint
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 .
 strategy
See also

setCalibrationStrategyPerComponent
(calibrationStrategy)¶ Set the calibration strategy per component.
 Parameters
 strategylist 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 .
 strategylist of

setDescription
(description)¶ Accessor to the description of the RandomVector.
 Parameters
 descriptionstr or sequence of str
Describes the components of the RandomVector.

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

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

setNonRejectedComponents
(nonRejectedComponents)¶ Set the components to be always accepted.
 Parameters
 nonRejectedComponentssequence 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
 observations2d 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.

setParameter
(parameters)¶ Accessor to the parameter of the distribution.
 Parameters
 parametersequence of float
Parameter values.

setParameters
(parameters)¶ Set the parameters.
 Parameters
 parameterssequence 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.
 prior

setProposal
(proposal)¶ Set the proposal.
 Parameters
 proposallist 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.
 proposallist of

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

setThinning
(thinning)¶ Set the thinning parameter.
 Parameters
 thinningint,
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
 isVerbosebool
The verbose mode is activated if it is True, desactivated otherwise.

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