# SobolIndicesAlgorithm¶

class SobolIndicesAlgorithm(*args)

Sensitivity analysis.

Notes

This method is concerned with analyzing the influence the random vector has on a random variable which is being studied for uncertainty (see also [Sobol1993]).

Here we attempt to evaluate the part of variance of due to the different components .

We denote G the physical model such as . Let us consider first the case where is of dimension 1.

The objective here is to develop the variability of the random variable as function of . Using the Hoeffding decomposition, we got:

where :

and . Using the previous decomposition, it follows that sensitivity indices are defined as follow:

are the first order sensitivity indices and measure the impact of in the variance , are the second order sensitivity indices and measure the impact of the interaction of and in the variance .

When , we use total sensitivity indices , which is defined as the sum of all indices that count the i-th variable:

where is the part of variance of that do not countain the i-th variable.

In practice, to estimate these quantities, Sobol proposes to use numerical methods that rely on the two independent realizations of the random vector . If we consider A and B two independent samples (of size n) of the previous random vector:

Each line is a realization of the random vector. The purpose is to mix these two samples to get an estimate of the sensitivities.

Sobol method require respectively and sample designs for the evaluation of first order (respectively second order) sensitivity indices. These are defined as hereafter:

It follows that and terms are defined as follow:

The implemented second order indices use this formula.

The major methods (Saltelli, Jansen, Mauntz-Kucherenko, Martinez) use the matrix to compute the indices (first order and total order). This matrix is defined as follows:

The formulas for the evaluation of the indices are given in each class documentation:

For multivariate outputs (see [Gamboa2013]), aggregate indices can be computed thanks to the getAggregatedFirstOrderIndices and getAggregatedTotalOrderIndices. Such indices write as follow:

Aggregated second order indices have not been implemented.

Note finally that the distribution of indices can be computed for first and total order thanks to the getFirstOrderIndicesDistribution() and getTotalOrderIndicesDistribution() methods.

This can be done either by bootstrap or using an asymptotic estimator, this behavior can be changed using setUseAsymptoticDistribution(). Its value in initialized by the SobolIndicesAlgorithm-DefaultUseAsymptoticDistribution resourcemap key.

For the bootstrap method the size is set by setBootstrapSize() values and initialized by SobolIndicesAlgorithm-DefaultBootstrapSize resourcemap key.

The asymptotic estimator of the variance are computed using the [Janon2014] delta method, in the technical report [PMFRE-01116].

The corresponding confidence interval is also provided using getFirstOrderIndicesInterval() and getTotalOrderIndicesInterval(). The confidence level is set by setConfidenceLevel and is initialized by the SobolIndicesAlgorithm-DefaultConfidenceLevel resourcemap key.

Also note that for numerical stability reasons the outputs are centered before indices estimation:

Methods

 DrawImportanceFactors(*args) Draw the importance factors. DrawSobolIndices(inputDescription, …) Draw the Sobol’ indices. draw(*args) Draw sensitivity indices. getAggregatedFirstOrderIndices() Get the evaluation of aggregated first order Sobol indices. getAggregatedTotalOrderIndices() Get the evaluation of aggregated total order Sobol indices. getBootstrapSize() Get the number of bootstrap sampling size. getClassName() Accessor to the object’s name. getConfidenceLevel() Get the confidence interval level for confidence intervals. getFirstOrderIndices([marginalIndex]) Get first order Sobol indices. getFirstOrderIndicesDistribution() Get the distribution of the aggregated first order Sobol indices. getFirstOrderIndicesInterval() Get interval for the aggregated first order Sobol indices. getId() Accessor to the object’s id. getImplementation(*args) Accessor to the underlying implementation. getName() Accessor to the object’s name. getSecondOrderIndices([marginalIndex]) Get second order Sobol indices. getTotalOrderIndices([marginalIndex]) Get total order Sobol indices. getTotalOrderIndicesDistribution() Get the distribution of the aggregated total order Sobol indices. getTotalOrderIndicesInterval() Get interval for the aggregated total order Sobol indices. getUseAsymptoticDistribution() Select asymptotic or bootstrap confidence intervals. setBootstrapSize(bootstrapSize) Set the number of bootstrap sampling size. setConfidenceLevel(confidenceLevel) Set the confidence interval level for confidence intervals. setName(name) Accessor to the object’s name. setUseAsymptoticDistribution(…) Select asymptotic or bootstrap confidence intervals.
 setDesign
__init__(*args)

Initialize self. See help(type(self)) for accurate signature.

static DrawImportanceFactors(*args)

Draw the importance factors.

Available usages:

DrawImportanceFactors(importanceFactors, title=’Importance Factors’)

DrawImportanceFactors(values, names, title=’Importance Factors’)

Parameters: importanceFactors : PointWithDescription Sequence containing the importance factors with a description for each component. The descriptions are used to build labels for the created Pie. If they are not mentioned, default labels will be used. values : sequence of float Importance factors. names : sequence of str Variables’ names used to build labels for the created Pie. title : str Title of the graph. Graph : Graph A graph containing a Pie of the importance factors of the variables.
static DrawSobolIndices(inputDescription, firstOrderIndices, secondOrderIndices)

Draw the Sobol’ indices.

Parameters: inputDescription : sequence of str Variable names firstOrderIndices : sequence of float First order indices values secondOrderIndices : sequence of float Total order indices values Graph : Graph For each variable, draws first and total indices
draw(*args)

Draw sensitivity indices.

Usage:

draw()

draw(marginalIndex)

With the first usage, draw the aggregated first and total order indices. With the second usage, draw the first and total order indices of a specific marginal in case of vectorial output

Parameters: marginalIndex: int marginal of interest (case of second usage) Graph : Graph A graph containing the aggregated first and total order indices.

Notes

If number of bootstrap sampling is not 0, and confidence level associated > 0, the graph includes confidence interval plots in the first usage.

getAggregatedFirstOrderIndices()

Get the evaluation of aggregated first order Sobol indices.

Returns: indices : Point Sequence containing aggregated first order Sobol indices.
getAggregatedTotalOrderIndices()

Get the evaluation of aggregated total order Sobol indices.

Returns: indices : Point Sequence containing aggregated total order Sobol indices.
getBootstrapSize()

Get the number of bootstrap sampling size.

Returns: bootstrapSize : int Number of bootsrap sampling
getClassName()

Accessor to the object’s name.

Returns: class_name : str The object class name (object.__class__.__name__).
getConfidenceLevel()

Get the confidence interval level for confidence intervals.

Returns: confidenceLevel : float Confidence level for confidence intervals
getFirstOrderIndices(marginalIndex=0)

Get first order Sobol indices.

Parameters: i : int, optional Index of the marginal of the function, equals to by default. indices : Point Sequence containing first order Sobol indices.
getFirstOrderIndicesDistribution()

Get the distribution of the aggregated first order Sobol indices.

Returns: distribution : Distribution Distribution for first order Sobol indices for each component.
getFirstOrderIndicesInterval()

Get interval for the aggregated first order Sobol indices.

Returns: interval : Interval Interval for first order Sobol indices for each component. Computed marginal by marginal (not from the joint distribution).
getId()

Accessor to the object’s id.

Returns: id : int Internal unique identifier.
getImplementation(*args)

Accessor to the underlying implementation.

Returns: impl : Implementation The implementation class.
getName()

Accessor to the object’s name.

Returns: name : str The name of the object.
getSecondOrderIndices(marginalIndex=0)

Get second order Sobol indices.

Parameters: i : int, optional Index of the marginal of the function, equals to by default. indices : SymmetricMatrix Tensor containing second order Sobol indices.
getTotalOrderIndices(marginalIndex=0)

Get total order Sobol indices.

Parameters: i : int, optional Index of the marginal of the function, equals to by default. indices : Point Sequence containing total order Sobol indices.
getTotalOrderIndicesDistribution()

Get the distribution of the aggregated total order Sobol indices.

Returns: distribution : Distribution Distribution for total order Sobol indices for each component.
getTotalOrderIndicesInterval()

Get interval for the aggregated total order Sobol indices.

Returns: interval : Interval Interval for total order Sobol indices for each component. Computed marginal by marginal (not from the joint distribution).
getUseAsymptoticDistribution()

Select asymptotic or bootstrap confidence intervals.

Returns: useAsymptoticDistribution : bool Whether to use bootstrap or asymptotic intervals
setBootstrapSize(bootstrapSize)

Set the number of bootstrap sampling size.

Default value is 0.

Parameters: bootstrapSize : int Number of bootsrap sampling
setConfidenceLevel(confidenceLevel)

Set the confidence interval level for confidence intervals.

Parameters: confidenceLevel : float Confidence level for confidence intervals
setName(name)

Accessor to the object’s name.

Parameters: name : str The name of the object.
setUseAsymptoticDistribution(useAsymptoticDistribution)

Select asymptotic or bootstrap confidence intervals.

Default value is set by the SobolIndicesAlgorithm-DefaultUseAsymptoticDistribution key.

Parameters: useAsymptoticDistribution : bool Whether to use bootstrap or asymptotic intervals