Test Functions for Sensitivity Analysis

Test Functions for Sensitivity Analysis#

The table below listed the available test functions typically used in the comparison of sensitivity analysis methods.

Name

Input Dimension

Constructor

Borehole

8

Borehole()

Bratley et al. (1992) A

M

Bratley1992a()

Bratley et al. (1992) B

M

Bratley1992b()

Bratley et al. (1992) C

M

Bratley1992c()

Bratley et al. (1992) D

M

Bratley1992d()

Damped Oscillator

7

DampedOscillator()

Flood

8

Flood()

Friedman (6D)

6

Friedman6D()

Genz (Corner Peak)

M

GenzCornerPeak()

Genz (Discontinuous)

M

GenzDiscontinuous()

Ishigami

3

Ishigami()

Linkletter et al. (2006) Decreasing Coefficients

10

LinkletterDecCoeffs()

Linkletter et al. (2006) Inert

10

LinkletterInert()

Linkletter et al. (2006) Linear

10

LinkletterLinear()

Linkletter et al. (2006) Sine

10

LinkletterSine()

Moon (2010) 3D

3

Moon3D()

Morris et al. (2006)

M

Morris2006()

OTL Circuit

6 / 20

OTLCircuit()

Piston Simulation

7 / 20

Piston()

Simple Portfolio Model

3

Portfolio3D()

SaltelliLinear

M

SaltelliLinear()

Sobol’-G

M

SobolG()

Sobol’-G*

M

SobolGStar()

Sobol’-Levitan

M

SobolLevitan()

Solar Cell Model

5

SolarCell()

Sulfur

9

Sulfur()

Welch et al. (1992)

20

Welch1992()

Wing Weight

10

WingWeight()

In a Python terminal, you can list all the available functions relevant for metamodeling applications using list_functions() and filter the results using the tag parameter (shown below in the HTML format):

import uqtestfuns as uqtf

uqtf.list_functions(tag="sensitivity", tablefmt="html")
No. Constructor # Input # Output Param. Description
1 Borehole() 8 1 False Borehole function from Harper and Gupta (1983)
2 Bratley1992a() M 1 False Integration test function #1 from Bratley et al. (1992)
3 Bratley1992b() M 1 False Integration test function #2 from Bratley et al. (1992)
4 Bratley1992c() M 1 False Integration test function #3 from Bratley et al. (1992)
5 Bratley1992d() M 1 False Integration test function #4 from Bratley et al. (1992)
6 DampedOscillator() 7 1 False Damped oscillator model from Igusa and Der Kiureghian (1985)
7 Flood() 8 1 False Flood model from Iooss and Lemaître (2015)
8 Friedman6D() 6 1 False Six-dimensional function from Friedman et al. (1983)
9 GenzCornerPeak() M 1 True Corner peak integrand from Genz (1984)
10 GenzDiscontinuous() M 1 True Discontinuous integrand from Genz (1984)
11 Ishigami() 3 1 True Ishigami function from Ishigami and Homma (1991)
12 LinkletterDecCoeffs() 10 1 False Linear function with decreasing coefficients (8 active inputs) from Linkletter et al. (2006)
13 LinkletterInert() 10 1 False Inert function with 10 inactive inputs from Linkletter et al. (2006)
14 LinkletterLinear() 10 1 False Linear function with 4 active inputs from Linkletter et al. (2006)
15 LinkletterSine() 10 1 False Sine function with 2 active inputs from Linkletter et al. (2006)
16 Moon3D() 3 1 False Three-dimensional function from Moon (2010)
17 Morris2006() M 1 True Test function from Morris et al. (2006)
18 OTLCircuit() 6 1 False Output transformerless (OTL) circuit model from Ben-Ari and Steinberg (2007)
19 Piston() 7 1 False Piston simulation model from Ben-Ari and Steinberg (2007)
20 Portfolio3D() 3 1 True Simple portfolio model from Saltelli et al. (2004)
21 SaltelliLinear() M 1 False Linear function from Saltelli et al. (2000)
22 SobolG() M 1 True Sobol'-G function from Saltelli and Sobol' (1995)
23 SobolGStar() M 1 True Sobol'-G* function from Saltelli et al. (2010)
24 SobolLevitan() M 1 True Test function from Sobol' and Levitan (1999)
25 SolarCell() 5 1 True Single-diode solar-cell model from Constantine et al. (2015)
26 Sulfur() 9 1 False Sulfur model from Charlson et al. (1992)
27 Welch1992() 20 1 False 20-Dimensional function from Welch et al. (1992)
28 WingWeight() 10 1 False Wing weight model from Forrester et al. (2008)

About sensitivity analysis#

Sensitivity analysis is a class of model inference techniques whose overarching aim is to understand the input-output relationship of a complex (perhaps, even a black-box) computational model. Within the uncertainty quantification (UQ) framework (see Uncertainty Quantification Framework), this aim is reframed as determining how the uncertainty of the model output(s) is affected by the uncertainty of the inputs.

While understanding the input-output relationship is valuable on its own[1], sensitivity analysis often focuses on more practical tasks, including:

  • Identifying of input variables that primarily drives the output uncertainty: This knowledge enables factor prioritization, where efforts are concentrated on reducing the uncertainty of the most influential inputs (if possible) to significantly decrease the uncertainty of the outputs

  • Identifying of non-influential input variables: This knowledge enables factor fixing/screening, where non-influential inputs are fixed to arbitrary value without affecting significantly (or at all) the uncertainty of the outputs. In essence, factor fixing reduces the dimensionality of the problem.

Sensitivity analysis within the UQ framework are typically carried out in a black-box manner, relying solely on model evaluations at carefully selected input points. The goal is then to achieve the aforementioned tasks with as few model evaluations as possible.

For detailed discussions on this topic, see [IL15, SRA+07].

References#

[IL15]

Bertrand Iooss and Paul Lemaître. A review on global sensitivity analysis methods. In Uncertainty Management in Simulation-Optimization of Complex Systems, pages 101–122. Springer US, 2015. doi:10.1007/978-1-4899-7547-8_5.

[SRA+07]

Andrea Saltelli, Marco Ratto, Terry Andres, Francesca Campolongo, Jessica Cariboni, Debora Gatelli, Michaela Saisana, and Stefano Tarantola. Global sensitivity analysis. The primer. Wiley, 2007. ISBN 9780470725184. doi:10.1002/9780470725184.