gemseo / uncertainty

api module

The API for uncertainty quantification and management.

Functions:

create_distribution(variable, distribution_name)

Create a distribution.

create_sensitivity_analysis(analysis, ...)

Create the sensitivity analysis.

create_statistics(dataset[, ...])

Create a statistics toolbox, either parametric or empirical.

get_available_distributions()

Get the available distributions.

get_available_sensitivity_analyses()

Get the available sensitivity analyses.

gemseo.uncertainty.api.create_distribution(variable, distribution_name, dimension=1, **options)[source]

Create a distribution.

Parameters
  • variable (str) – The name of the random variable.

  • distribution_name (str,) – The name of a class implementing a probability distribution, e.g. ‘OTUniformDistribution’ or ‘SPDistribution’.

  • dimension (int) –

    The dimension of the random variable.

    By default it is set to 1.

  • **options – The distribution options.

Return type

Distribution

Examples

>>> from gemseo.uncertainty.api import create_distribution
>>>
>>> distribution = create_distribution(
...     "x", "OTNormalDistribution", dimension=2, mu=1, sigma=2
... )
>>> print(distribution)
Normal(mu=1, sigma=2)
>>> print(distribution.mean, distribution.standard_deviation)
[1. 1.] [2. 2.]
>>> samples = distribution.get_sample(10)
>>> print(samples.shape)
(10, 2)
gemseo.uncertainty.api.create_sensitivity_analysis(analysis, discipline, parameter_space, **options)[source]

Create the sensitivity analysis.

Parameters
Returns

The toolbox for these sensitivity indices.

Return type

gemseo.uncertainty.sensitivity.analysis.SensitivityAnalysis

Examples

>>> from gemseo.api import create_discipline, create_parameter_space
>>> from gemseo.uncertainty.api import create_sensitivity_analysis
>>>
>>> expressions = {"y1": "x1+2*x2", "y2": "x1-3*x2"}
>>> discipline = create_discipline(
...     "AnalyticDiscipline", expressions_dict=expressions
... )
>>>
>>> parameter_space = create_parameter_space()
>>> parameter_space.add_random_variable(
...     "x1", "OTUniformDistribution", minimum=-1, maximum=1
... )
>>> parameter_space.add_random_variable(
...     "x2", "OTNormalDistribution", mu=0.5, sigma=2
... )
>>>
>>> analysis = create_sensitivity_analysis(
...     "CorrelationIndices", discipline, parameter_space, n_samples=1000
... )
>>> indices = analysis.compute_indices()
gemseo.uncertainty.api.create_statistics(dataset, variables_names=None, tested_distributions=None, fitting_criterion='BIC', selection_criterion='best', level=0.05, name=None)[source]

Create a statistics toolbox, either parametric or empirical.

If parametric, the toolbox selects a distribution from candidates, based on a fitting criterion and on a selection strategy.

Parameters
  • dataset (gemseo.core.dataset.Dataset) – A dataset.

  • variables_names (Optional[Iterable[str]]) –

    The variables of interest. If None, consider all the variables from dataset.

    By default it is set to None.

  • tested_distributions (Optional[Sequence[str]]) –

    The names of the tested distributions.

    By default it is set to None.

  • fitting_criterion (str) –

    The name of a goodness-of-fit criterion, measuring how the distribution fits the data. Use ParametricStatistics.get_criteria() to get the available criteria.

    By default it is set to BIC.

  • selection_criterion

    The name of a selection criterion to select a distribution from candidates. Either ‘first’ or ‘best’.

    By default it is set to best.

  • level (float) –

    A test level, i.e. the risk of committing a Type 1 error, that is an incorrect rejection of a true null hypothesis, for criteria based on a test hypothesis.

    By default it is set to 0.05.

  • name (Optional[str]) –

    A name for the statistics toolbox instance. If None, use the concatenation of class and dataset names.

    By default it is set to None.

Returns

A statistics toolbox.

Return type

gemseo.uncertainty.statistics.statistics.Statistics

Examples

>>> from gemseo.api import (
...     create_discipline,
...     create_parameter_space,
...     create_scenario
... )
>>> from gemseo.uncertainty.api import create_statistics
>>>
>>> expressions = {"y1": "x1+2*x2", "y2": "x1-3*x2"}
>>> discipline = create_discipline(
...     "AnalyticDiscipline", expressions_dict=expressions
... )
>>> discipline.set_cache_policy(discipline.MEMORY_FULL_CACHE)
>>>
>>> parameter_space = create_parameter_space()
>>> parameter_space.add_random_variable(
...     "x1", "OTUniformDistribution", minimum=-1, maximum=1
... )
>>> parameter_space.add_random_variable(
...     "x2", "OTNormalDistribution", mu=0.5, sigma=2
... )
>>>
>>> scenario = create_scenario(
...     [discipline],
...     "DisciplinaryOpt",
...     "y1",
...     parameter_space,
...     scenario_type="DOE"
... )
>>> scenario.execute({'algo': 'OT_MONTE_CARLO', 'n_samples': 100})
>>>
>>> dataset = discipline.cache.export_to_dataset()
>>>
>>> statistics = create_statistics(dataset)
>>> mean = statistics.mean()
gemseo.uncertainty.api.get_available_distributions()[source]

Get the available distributions.

Return type

List[str]

gemseo.uncertainty.api.get_available_sensitivity_analyses()[source]

Get the available sensitivity analyses.

Return type

List[str]