Priors, input space and experimental design¶
Note
#TODO Write a short intro to uncertain inputs and sampling
Input classes¶
Four classes contained in bayesvalidrox are associated with the inputs: bayesvalidrox.surrogate_models.inputs.Marginal
, bayesvalidrox.surrogate_models.inputs.Input
, bayesvalidrox.surrogate_models.input_space.InputSpace
and bayesvalidrox.surrogate_models.exp_designs.ExpDesigns
.
Uncertain parameters are specified via their marginal distributions in bayesvalidrox.surrogate_models.inputs.Marginal
objects as either distribution types with associated parameters, or via a set of realizations.
Supported distribution types include unif
, norm
, gamma
, beta
, lognorm
, expon
and weibull
.
All marginals contained in an bayesvalidrox.surrogate_models.inputs.Input
object should be defined in the same manner, mixing definitions via distribution type and sampels is not supported.
If rosenblatt
is set as True
, then a Rosenblatt transform will be applied for training the surrogate.
Note
When using a polynomial-type surrogate setting rosenblatt
to True
results in all hermite polynomials.
If all uncertain parameters are specified as samples, the corresponding polynomials are automatically calculated following an aPCE.
#TODO Recheck this second point!
The bayesvalidrox.surrogate_models.input_space.InputSpace
checks the validity of the given marginals and builds the input space.
This includes sampling from the distributions and applying the Rosenblatt transform or an isoprobabilistic transformation.
The bayesvalidrox.surrogate_models.input_space.InputSpace
is used mainly in the surrogate model.
The class bayesvalidrox.surrogate_models.exp_designs.ExpDesigns
additionally contains methods and attributes related to sampling from the input space for static and iterative training of the surrogate model.
Supported sampling methods include random
, latin-hypercube
, sobol
, halton
, hammersley
, chebyshev(FT)
, grid(FT)
and user
for user-defined sampling.
The options for iterative metamodel training are detailed in Training surrogate models.
Example¶
In practice, only the classes bayesvalidrox.surrogate_models.inputs.Input
and bayesvalidrox.surrogate_models.exp_designs.ExpDesigns
are directly used.
>>> from bayesvalidrox import Input, ExpDesign
Marginals of uncertain parameters can be directly added and defined on an Input
object.
>>> Inputs = Input()
If they are defined via distribution types, the name
, dist_type
and parameters
for the distribution should be set.
>>> Inputs.add_marginals()
>>> Inputs.Marginals[0].name = '$X$'
>>> Inputs.Marginals[0].dist_type = 'unif'
>>> Inputs.Marginals[0].parameters = [-5, 5]
If they are given via data, only name
and input_data
are relevant.
>>> Inputs.add_marginals()
>>> Inputs.Marginals[0].name = '$X$'
>>> Inputs.Marginals[0].input_data = inputParams[:, 0]
An experimental design can be constructed based on these inputs.
>>> ExpDesign = ExpDesign(Inputs)
Samples of the marginals can be created by specifying a sampling method and generating the wanted number of samples.
>>> ExpDesign.sampling_method = 'latin_hypercube'
>>> samples = ExpDesign.generate_samples(100)