Examples / Sensitivities / sobol
This file is a complete demo of the capability of the sobol function from the CODES toolbox.
Contents
Documentation
The documentation for the sobol class can be found here.
Set rng
Set random number generator seed:
rng(0)
Simple example
Compute sobols:
f=@(x)1/8*prod(3*x.^2+1,2); dim=3; n=1e5; res=CODES.sensitivity.sobol(f,dim,n); disp(res.S1) disp(res.S2) disp(res.St)
X_1 X_2 X_3
Est 1 0.278737 0.272175 0.273971
Est 2 0.271663 0.275556 0.280947
X_1 X_2 X_3
X_1 NaN 0.0600965 0.0550984
X_2 0.0583251 NaN 0.053057
X_3 0.0549634 0.0504917 NaN
X_1 X_2 X_3
Est 1 0.396643 0.394859 0.40047
Est 2 0.384738 0.38854 0.401599
Convergence plot
Compute sensitivity indices and plot the convergence with respect to number of samples used:
f=@(x)1/8*prod(3*x.^2+1,2);
dim=3;
n=1e5;
CODES.sensitivity.sobol(f,dim,n,'conv_seq',linspace(100,n,20));
Bar plot
Compute sensitivity indices and plot them:
f=@(x)2*x(:,1)+4*x(:,2)+9*x(:,1).*x(:,2);
dim=3;
n=1e5;
CODES.sensitivity.sobol(f,dim,n,'bar_plot',true);
IDF
Let us compare the sensitivities on f where the variables are either uniform between 0 and 1 (default) standard normals:
f=@(x)1/8*prod(3*x.^2+1,2); dim=3; n=1e5; CODES.sensitivity.sobol(f,dim,n,'bar_plot',true); CODES.sensitivity.sobol(f,dim,n,'bar_plot',true,'IDF',@(x)norminv(x));
Note the slider in the above figures. It is used to define a value (default 0) below which Sobol' indices can be disregarded. Increasing this value will cause the smallest indices to be removed from the bar plot for increased readability.
Error plot
Compute sensitivity indices and plot them (error) using bootstraped confidence interval. Be mindfull that BCA (that involves Jacknife) can be very heavy for large samples:
f=@(x)1/8*prod(3*x.^2+1,2); dim=3; n=1e4; tic; CODES.sensitivity.sobol(f,dim,n,'err_plot',true,... 'CI_boot',true,'boot_type','bca'); disp(['BCA ' CODES.common.time(toc)])
BCA 28s
tic; CODES.sensitivity.sobol(f,dim,n,'err_plot',true,... 'CI_boot',true,'boot_type','per'); disp(['Per ' CODES.common.time(toc)])
Per 2s
References
- Saltelli (2002): Saltelli A., (2011) Making best use of model evaluations to compute sensitivity indices. Computer Physics Communications 145(2):280-297 - DOI
Copyright © 2015 Computational Optimal Design of Engineering Systems (CODES) Laboratory. University of Arizona.
|
Computational Optimal Design of Engineering Systems |
|

