Source code for gemseo.uncertainty.api

# -*- coding: utf-8 -*-
# Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 3 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

# Contributors:
#    INITIAL AUTHORS - initial API and implementation and/or initial
#                           documentation
#        :author: Matthias De Lozzo
#    OTHER AUTHORS   - MACROSCOPIC CHANGES
"""
API for uncertainty management
==============================

This API (Application Programming Interface) is dedicated to
uncertainty management. Current functions are:

- :meth:`~gemseo.uncertainty.api.get_available_distributions`,
- :meth:`~gemseo.uncertainty.api.create_distribution`,
- :meth:`~gemseo.uncertainty.api.create_statistics`.
"""
from __future__ import absolute_import, division, unicode_literals

from future import standard_library

standard_library.install_aliases()

# pylint: disable=import-outside-toplevel


[docs]def get_available_distributions(): """Get the available distributions.""" from gemseo.uncertainty.distributions.factory import DistributionFactory factor = DistributionFactory() return factor.distributions
[docs]def create_distribution(variable, distribution_type, dimension=1, **options): """Create a distribution :param str variable: variable name. :param str distribution_type: distribution type. :param int dimension: variable dimension. :param options: distribution options. """ from gemseo.uncertainty.distributions.factory import DistributionFactory factor = DistributionFactory() return factor.create( distribution_type, variable=variable, dimension=dimension, **options )
[docs]def create_statistics( dataset, variables_names=None, tested_distributions=None, fitting_criterion="BIC", selection_criterion="best", level=0.05, name=None, ): """Constructor :param Dataset dataset: dataset :param list(str) variables_names: list of variables names or list of variables names. If None, the method considers all variables from loaded dataset. Default: None. :param list(str) tested_distributions: list of candidate distributions names for parametric statistics. If None, considers empirical statistics. Default: None. :param str fitting_criterion: goodness-of-fit criterion for parametric statistics. Default: 'BIC'. :param float level: risk of committing a Type 1 error, that is an incorrect rejection of a true null hypothesis, for criteria based on test hypothesis in the case of parametric statistics. Default: 0.05. :param str selection_criterion: selection criterion for parametric statistics. Default: 'best' :param str name: name of the object. If None, use the concatenation of class and dataset names. Default: None. """ from gemseo.uncertainty.statistics.empirical import EmpiricalStatistics as EmpStats from gemseo.uncertainty.statistics.parametric import ( ParametricStatistics as ParamStats, ) if tested_distributions is None: statistical_analysis = EmpStats(dataset, variables_names, name) else: statistical_analysis = ParamStats( dataset, tested_distributions, variables_names, fitting_criterion, level, selection_criterion, name, ) return statistical_analysis