SobolIndicesAlgorithm¶
(Source code, png, hires.png, pdf)

class
SobolIndicesAlgorithm
(*args)¶ Sensitivity analysis.
Notes
This method analyzes the influence of each component of a random vector on a random vector by computing Sobol’ indices (see also [sobol1993]).
The idea is to compute, for every random variable (), the part of its variance due to each component () of .
Let be the physical model such as . Let us first consider the case where . In that case, we denote by .
Let us write the variance of as a function of .
For any subset , define .
Using the Hoeffding decomposition, we get:
where:
For the sake of conciseness, for any integers , define and . We have:
First and second order Sobol’ indices are defined as follows:
The first order Sobol’ index measures the part of the variance of explained by alone. The second order Sobol’ index measures the part of the variance of explained by the interaction of and .
Let us define
Total order Sobol’ indices are defined as follows:
The total order Sobol’ index quantifies the part of the variance of that is due to the effect of and its interactions with all the other input variables. It can also be viewed as the part of the variance of that cannot be explained without .
In practice, to estimate these quantities, Sobol’ proposes to use numerical methods that rely on two independent realizations of the random vector . Let and be two independent samples (of size ) of :
Each line is a realization of the random vector .
We are now going to mix these two samples to get an estimate of the sensitivity indices.
For the sake of stability, computations will be performed with centered output. Let be the empirical mean of all collected output samples and define:
To estimate the total variance , we apply the
computeVariance()
method of theSample
.Various estimators of , and are provided by the
SobolIndicesAlgorithm
implementations:SaltelliSensitivityAlgorithm
for the Saltelli method,JansenSensitivityAlgorithm
for the Jansen method,MauntzKucherenkoSensitivityAlgorithm
for the MauntzKucherenko method,MartinezSensitivityAlgorithm
for the Martinez method.
Formulas for , and are given in the corresponding documentation pages.
The expression of the estimator of is the same for all these classes, but since it depends on the estimators and , it is effectively different for each of them.
For multivariate outputs (, see [gamboa2013]), we must compute the Sobol’ indices with respect to each output variable. They can be aggregated using the following formulas:
Aggregated second order indices have not been implemented.
Note finally that the distribution of the estimators of the first and total order indices can be estimated thanks to the
getFirstOrderIndicesDistribution()
andgetTotalOrderIndicesDistribution()
methods. This is done either through bootstrapping or using an asymptotic estimator. TheResourceMap
key SobolIndicesAlgorithmDefaultUseAsymptoticDistribution stores a boolean that decides the default behavior, but it can be overridden by the methodsetUseAsymptoticDistribution()
.Corresponding confidence intervals are provided by the methods
getFirstOrderIndicesInterval()
andgetTotalOrderIndicesInterval()
. Their confidence level can be adjusted withsetConfidenceLevel()
. The default confidence level is stored in theResourceMap
and can be accessed with the SobolIndicesAlgorithmDefaultConfidenceLevel key.The asymptotic estimator of the distribution requires an asymptotic estimate of its variance, which is computed using the [janon2014] delta method, as expained in the technical report [pmfre01116].
Methods
DrawImportanceFactors
(*args)Draw the importance factors.
DrawSobolIndices
(*args)Draw the Sobol’ indices.
draw
(*args)Draw sensitivity indices.
Get the evaluation of aggregated first order Sobol indices.
Get the evaluation of aggregated total order Sobol indices.
Get the number of bootstrap sampling size.
Accessor to the object’s name.
Get the confidence interval level for confidence intervals.
getFirstOrderIndices
([marginalIndex])Get first order Sobol indices.
Get the distribution of the aggregated first order Sobol indices.
Get interval for the aggregated first order Sobol indices.
getId
()Accessor to the object’s id.
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.
Get the distribution of the aggregated total order Sobol indices.
Get interval for the aggregated total order Sobol indices.
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.
Select asymptotic or bootstrap confidence intervals.
DrawCorrelationCoefficients
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.
 valuessequence of float
Importance factors.
 namessequence of str
Variables’ names used to build labels for the created Pie.
 titlestr
Title of the graph.
 importanceFactors
 Returns

static
DrawSobolIndices
(*args)¶ Draw the Sobol’ indices.
 Parameters
 Returns
 graph
Graph
For each variable, draws first and total indices
 graph

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)
 Returns
 graph
Graph
A graph containing the aggregated first and total order indices.
 graph
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.
 indices

getAggregatedTotalOrderIndices
()¶ Get the evaluation of aggregated total order Sobol indices.
 Returns
 indices
Point
Sequence containing aggregated total order Sobol indices.
 indices

getBootstrapSize
()¶ Get the number of bootstrap sampling size.
 Returns
 bootstrapSizeint
Number of bootsrap sampling

getClassName
()¶ Accessor to the object’s name.
 Returns
 class_namestr
The object class name (object.__class__.__name__).

getConfidenceLevel
()¶ Get the confidence interval level for confidence intervals.
 Returns
 confidenceLevelfloat
Confidence level for confidence intervals

getFirstOrderIndices
(marginalIndex=0)¶ Get first order Sobol indices.
 Parameters
 iint, optional
Index of the marginal of the function, equals to by default.
 Returns
 indices
Point
Sequence containing first order Sobol indices.
 indices

getFirstOrderIndicesDistribution
()¶ Get the distribution of the aggregated first order Sobol indices.
 Returns
 distribution
Distribution
Distribution for first order Sobol indices for each component.
 distribution

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).
 interval

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

getImplementation
()¶ Accessor to the underlying implementation.
 Returns
 implImplementation
The implementation class.

getName
()¶ Accessor to the object’s name.
 Returns
 namestr
The name of the object.

getSecondOrderIndices
(marginalIndex=0)¶ Get second order Sobol indices.
 Parameters
 iint, optional
Index of the marginal of the function, equals to by default.
 Returns
 indices
SymmetricMatrix
Tensor containing second order Sobol indices.
 indices

getTotalOrderIndices
(marginalIndex=0)¶ Get total order Sobol indices.
 Parameters
 iint, optional
Index of the marginal of the function, equals to by default.
 Returns
 indices
Point
Sequence containing total order Sobol indices.
 indices

getTotalOrderIndicesDistribution
()¶ Get the distribution of the aggregated total order Sobol indices.
 Returns
 distribution
Distribution
Distribution for total order Sobol indices for each component.
 distribution

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).
 interval

getUseAsymptoticDistribution
()¶ Select asymptotic or bootstrap confidence intervals.
 Returns
 useAsymptoticDistributionbool
Whether to use bootstrap or asymptotic intervals

setBootstrapSize
(bootstrapSize)¶ Set the number of bootstrap sampling size.
Default value is 0.
 Parameters
 bootstrapSizeint
Number of bootsrap sampling

setConfidenceLevel
(confidenceLevel)¶ Set the confidence interval level for confidence intervals.
 Parameters
 confidenceLevelfloat
Confidence level for confidence intervals

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

setUseAsymptoticDistribution
(useAsymptoticDistribution)¶ Select asymptotic or bootstrap confidence intervals.
Default value is set by the SobolIndicesAlgorithmDefaultUseAsymptoticDistribution key.
 Parameters
 useAsymptoticDistributionbool
Whether to use bootstrap or asymptotic intervals