# Variance-based sensitivity analysis

Variance-based sensitivity analysis (often referred to as the Sobol’ method or Sobol’ indices, after Ilya M. Sobol’) is a form of global sensitivity analysis. Working within a probabilistic framework, it decomposes the variance of the output of the model or system into fractions which can be attributed to inputs or sets of inputs. For example, given a model with two inputs and one output, one might find that 70% of the output variance is caused by the variance in the first input, 20% by the variance in the second, and 10% due to interactions between the two. These percentages are directly interpreted as measures of sensitivity. Variance-based measures of sensitivity are attractive because they measure sensitivity across the whole input space (i.e. it is a global method), they can deal with nonlinear responses, and they can measure the effect of interactions in non-additive systems.

## Decomposition of variance

From a black box perspective, any model may be viewed as a function Y=f(X), where X is a vector of d uncertain model inputs {X$_1$, X$_2$, ... X$_d$}, and Y is a chosen univariate model output (note that this approach examines scalar model outputs, but multiple outputs can be analysed by multiple independent sensitivity analyses). Furthermore, it will be assumed that the inputs are independently and uniformly distributed within the unit hypercube, i.e. $X_{i}\in [0,1]$ for $i=1,2,...,d$. This incurs no loss of generality because any input space can be transformed onto this unit hypercube. f(X) may be decomposed in the following way,
    $Y=f_{0}+\sum _{i=1}^{d}f_{i}(X_{i})+\sum _{i<j}^{d}f_{ij}(X_{i},X_{j})+\cdots +f_{1,2,\dots ,d}(X_{1},X_{2},\dots ,X_{d})$
where f$_0$ is a constant and f$_i$ is a function of X$_i$, f$_{ij}$ a function of X$_i$ and X$_j$, etc. A condition of this decomposition is that,
    $\int _{0}^{1}f_{i_{1}i_{2}\dots i_{s}}(X_{i_{1}},X_{i_{2}},\dots ,X_{i_{s}})dX_{k}=0,{\text{ for }}k=i_{1},...,i_{s}$
i.e. all the terms in the functional decomposition are orthogonal. This leads to definitions of the terms of the functional decomposition in terms of conditional expected values,
    $f_{0}=E(Y)$
    $f_{i}(X_{i})=E(Y|X_{i})-f_{0}$
    $f_{ij}(X_{i},X_{j})=E(Y|X_{i},X_{j})-f_{0}-f_{i}-f_{j}$
From which it can be seen that f$_i$ is the effect of varying X$_i$ alone (known as the main effect of X$_i$), and f$_{ij}$ is the effect of varying X$_i$ and X$_j$ simultaneously, additional to the effect of their individual variations. This is known as a second-order interaction. Higher-order terms have analogous definitions.
Now, further assuming that the f(X) is square-integrable, the functional decomposition may be squared and integrated to give,
    $\int f^{2}(\mathbf {X} )d\mathbf {X} -f_{0}^{2}=\sum _{s=1}^{d}\sum _{i_{1}<\dots <i_{s}}^{d}\int f_{i_{1}\dots i_{s}}^{2}dX_{i_{1}}\dots dX_{i_{s}}$
Notice that the left hand side is equal to the variance of Y, and the terms of the right hand side are variance terms, now decomposed with respect to sets of the X$_i$. This finally leads to the decomposition of variance expression,
    $\operatorname {Var} (Y)=\sum _{i=1}^{d}V_{i}+\sum _{i<j}^{d}V_{ij}+\cdots +V_{12\dots d}$
where
    $V_{i}=\operatorname {Var} _{X_{i}}\left(E_{{\textbf {X}}_{\sim i}}(Y\mid X_{i})\right)$,
    $V_{ij}=\operatorname {Var} _{X_{ij}}\left(E_{{\textbf {X}}_{\sim ij}}\left(Y\mid X_{i},X_{j}\right)\right)-V_{i}-V_{j}$
and so on. The X$_{~i}$ notation indicates the set of all variables except X$_i$. The above variance decomposition shows how the variance of the model output can be decomposed into terms attributable to each input, as well as the interaction effects between them. Together, all terms sum to the total variance of the model output.

## First-order indices

A direct variance-based measure of sensitivity S$_i$, called the "first-order sensitivity index", or "main effect index" is stated as follows,
    $S_{i}={\frac {V_{i}}{\operatorname {Var} (Y)}}$
This is the contribution to the output variance of the main effect of X$_i$, therefore it measures the effect of varying X$_i$ alone, but averaged over variations in other input parameters. It is standardised by the total variance to provide a fractional contribution. Higher-order interaction indices S$_{ij}$, S$_{ijk}$ and so on can be formed by dividing other terms in the variance decomposition by Var(Y). Note that this has the implication that,
    $\sum _{i=1}^{d}S_{i}+\sum _{i<j}^{d}S_{ij}+\cdots +S_{12\dots d}=1$

## Total-effect index

Using the S$_i$, S$_{ij}$ and higher-order indices given above, one can build a picture of the importance of each variable in determining the output variance. However, when the number of variables is large, this requires the evaluation of 2$^d$-1 indices, which can be too computationally demanding. For this reason, a measure known as the "Total-effect index" or "Total-order index", S$_{Ti}$, is used. This measures the contribution to the output variance of X$_i$, including all variance caused by its interactions, of any order, with any other input variables. It is given as,
    $S_{Ti}={\frac {E_{{\textbf {X}}_{\sim i}}\left(\operatorname {Var} _{X_{i}}(Y\mid \mathbf {X} _{\sim i})\right)}{\operatorname {Var} (Y)}}=1-{\frac {\operatorname {Var} _{{\textbf {X}}_{\sim i}}\left(E_{X_{i}}(Y\mid \mathbf {X} _{\sim i})\right)}{\operatorname {Var} (Y)}}$
Note that unlike the S$_i$,
    $\sum _{i=1}^{d}S_{Ti}\geq 1$
due to the fact that the interaction effect between e.g. X$_i$ and X$_j$ is counted in both S$_{Ti}$ and S$_{Tj}$. In fact, the sum of the S$_{Ti}$ will only be equal to 1 when the model is purely additive.

## Calculation of indices

For analytically tractable functions, the indices above may be calculated analytically by evaluating the integrals in the decomposition. However, in the vast majority of cases they are estimated – this is usually done by the Monte Carlo method.

### Sampling sequences

The Monte Carlo approach involves generating a sequence of randomly distributed points inside the unit hypercube (strictly speaking these will be pseudorandom). In practice, it is common to substitute random sequences with low-discrepancy sequences to improve the efficiency of the estimators. This is then known as the quasi-Monte Carlo method. Some low-discrepancy sequences commonly used in sensitivity analysis include the Sobol’ sequence and the Latin hypercube design.

### Procedure

To calculate the indices using the (quasi) Monte Carlo method, the following steps are used:
* Generate an N×2d sample matrix, i.e. each row is a sample point in the hyperspace of 2d dimensions. This should be done with respect to the probability distributions of the input variables.
* Use the first d columns of the matrix as matrix A, and the remaining d columns as matrix B. This effectively gives two independent samples of N points in the d-dimensional unit hypercube.
* Build d further N×d matrices A$_B$$^i$, for i = 1,2,...,d, such that the ith column of A$_B$$^i$ is equal to the ith column of B, and the remaining columns are from A.
* The A, B, and the d A$_B$$^i$ matrices in total specify N(d+2) points in the input space (one for each row). Run the model at each design point in the A, B, and A$_B$$^i$ matrices, giving a total of N(d+2) model evaluations – the corresponding f(A), f(B) and f(A$_B$$^i$) values.
* Calculate the sensitivity indices using the estimators below.
The accuracy of the estimators is of course dependent on N. The value of N can be chosen by sequentially adding points and calculating the indices until the estimated values reach some acceptable convergence. For this reason, when using low-discrepancy sequences, it can be advantageous to use those that allow sequential addition of points (such as the Sobol’ sequence), as compared to those that do not (such as Latin hypercube sequences).

### Estimators

There are a number of possible Monte Carlo estimators available for both indices. Two that are currently in general use are,
    $\operatorname {Var} _{X_{i}}(E_{\mathbf {X} _{\sim i}}(Y|X_{i}))\approx {{\frac {1}{N}}\sum _{j=1}^{N}f\left(\mathbf {B} \right)_{j}\left(f\left(\mathbf {A} _{B}^{i}\right)_{j}-f\left(\mathbf {A} \right)_{j}\right)}$
and
    $E_{\mathbf {X} _{\sim i}}\left(\operatorname {Var} _{X_{i}}\left(Y\mid \mathbf {X} _{\sim i}\right)\right)\approx {{\frac {1}{2N}}\sum _{j=1}^{N}\left(f\left(\mathbf {A} \right)_{j}-f\left(\mathbf {A} _{B}^{i}\right)_{j}\right)^{2}}$
for the estimation of the S$_i$ and the S$_{Ti}$ respectively.

### Computational expense

For the estimation of the S$_i$ and the S$_{Ti}$ for all input variables, N(d+2) model runs are required. Since N is often of the order of hundreds or thousands of runs, computational expense can quickly become a problem when the model takes a significant amount of time for a single run. In such cases, there are a number of techniques available to reduce the computational cost of estimating sensitivity indices, such as emulators, HDMR and FAST.