SALib.analyze package¶
Submodules¶
SALib.analyze.common_args module¶
SALib.analyze.delta module¶
-
SALib.analyze.delta.
analyze
(problem: Dict[KT, VT], X: numpy.array, Y: numpy.array, num_resamples: int = 100, conf_level: float = 0.95, print_to_console: bool = False, seed: int = None) → Dict[KT, VT][source]¶ Perform Delta Moment-Independent Analysis on model outputs.
Returns a dictionary with keys ‘delta’, ‘delta_conf’, ‘S1’, and ‘S1_conf’, where each entry is a list of size D (the number of parameters) containing the indices in the same order as the parameter file.
Parameters: - problem (dict) – The problem definition
- X (numpy.matrix) – A NumPy matrix containing the model inputs
- Y (numpy.array) – A NumPy array containing the model outputs
- num_resamples (int) – The number of resamples when computing confidence intervals (default 10)
- conf_level (float) – The confidence interval level (default 0.95)
- print_to_console (bool) – Print results directly to console (default False)
References
[1] Borgonovo, E. (2007). “A new uncertainty importance measure.” Reliability Engineering & System Safety, 92(6):771-784, doi:10.1016/j.ress.2006.04.015. [2] Plischke, E., E. Borgonovo, and C. L. Smith (2013). “Global sensitivity measures from given data.” European Journal of Operational Research, 226(3):536-550, doi:10.1016/j.ejor.2012.11.047. Examples
>>> X = latin.sample(problem, 1000) >>> Y = Ishigami.evaluate(X) >>> Si = delta.analyze(problem, X, Y, print_to_console=True)
-
SALib.analyze.delta.
bias_reduced_delta
(Y, Ygrid, X, m, num_resamples, conf_level)[source]¶ Plischke et al. 2013 bias reduction technique (eqn 30)
SALib.analyze.dgsm module¶
-
SALib.analyze.dgsm.
analyze
(problem, X, Y, num_resamples=100, conf_level=0.95, print_to_console=False, seed=None)[source]¶ Calculates Derivative-based Global Sensitivity Measure on model outputs.
Returns a dictionary with keys ‘vi’, ‘vi_std’, ‘dgsm’, and ‘dgsm_conf’, where each entry is a list of size D (the number of parameters) containing the indices in the same order as the parameter file.
Parameters: - problem (dict) – The problem definition
- X (numpy.matrix) – The NumPy matrix containing the model inputs
- Y (numpy.array) – The NumPy array containing the model outputs
- num_resamples (int) – The number of resamples used to compute the confidence intervals (default 1000)
- conf_level (float) – The confidence interval level (default 0.95)
- print_to_console (bool) – Print results directly to console (default False)
References
[1] Sobol, I. M. and S. Kucherenko (2009). “Derivative based global sensitivity measures and their link with global sensitivity indices.” Mathematics and Computers in Simulation, 79(10):3009-3017, doi:10.1016/j.matcom.2009.01.023.
-
SALib.analyze.dgsm.
calc_dgsm
(base, perturbed, x_delta, bounds, num_resamples, conf_level)[source]¶ v_i sensitivity measure following Sobol and Kucherenko (2009). For comparison, total order S_tot <= dgsm
-
SALib.analyze.dgsm.
calc_vi_mean
(base, perturbed, x_delta)[source]¶ Calculate v_i mean.
Same as calc_vi_stats but only returns the mean.
SALib.analyze.fast module¶
-
SALib.analyze.fast.
analyze
(problem, Y, M=4, print_to_console=False, seed=None)[source]¶ Performs the extended Fourier Amplitude Sensitivity Test (eFAST) on model outputs.
Returns a dictionary with keys ‘S1’ and ‘ST’, where each entry is a list of size D (the number of parameters) containing the indices in the same order as the parameter file.
Parameters: References
[1] Cukier, R. I., C. M. Fortuin, K. E. Shuler, A. G. Petschek, and J. H. Schaibly (1973). “Study of the sensitivity of coupled reaction systems to uncertainties in rate coefficients.” J. Chem. Phys., 59(8):3873-3878, doi:10.1063/1.1680571. [2] Saltelli, A., S. Tarantola, and K. P.-S. Chan (1999). “A Quantitative Model-Independent Method for Global Sensitivity Analysis of Model Output.” Technometrics, 41(1):39-56, doi:10.1080/00401706.1999.10485594. Examples
>>> X = fast_sampler.sample(problem, 1000) >>> Y = Ishigami.evaluate(X) >>> Si = fast.analyze(problem, Y, print_to_console=False)
SALib.analyze.ff module¶
Created on 30 Jun 2015
@author: will2
-
SALib.analyze.ff.
analyze
(problem, X, Y, second_order=False, print_to_console=False, seed=None)[source]¶ Perform a fractional factorial analysis
Returns a dictionary with keys ‘ME’ (main effect) and ‘IE’ (interaction effect). The techniques bulks out the number of parameters with dummy parameters to the nearest 2**n. Any results involving dummy parameters could indicate a problem with the model runs.
Parameters: - problem (dict) – The problem definition
- X (numpy.matrix) – The NumPy matrix containing the model inputs
- Y (numpy.array) – The NumPy array containing the model outputs
- second_order (bool, default=False) – Include interaction effects
- print_to_console (bool, default=False) – Print results directly to console
Returns: Si – A dictionary of sensitivity indices, including main effects
ME
, and interaction effectsIE
(ifsecond_order
is True)Return type: Examples
>>> X = sample(problem) >>> Y = X[:, 0] + (0.1 * X[:, 1]) + ((1.2 * X[:, 2]) * (0.2 + X[:, 0])) >>> analyze(problem, X, Y, second_order=True, print_to_console=True)
-
SALib.analyze.ff.
interactions
(problem, Y, print_to_console=False)[source]¶ Computes the second order effects
Computes the second order effects (interactions) between all combinations of pairs of input factors
Parameters: Returns: - ie_names (list) – The names of the interaction pairs
- IE (list) – The sensitivity indices for the pairwise interactions
SALib.analyze.morris module¶
-
SALib.analyze.morris.
analyze
(problem, X, Y, num_resamples=100, conf_level=0.95, print_to_console=False, num_levels=4, seed=None)[source]¶ Perform Morris Analysis on model outputs.
Returns a dictionary with keys ‘mu’, ‘mu_star’, ‘sigma’, and ‘mu_star_conf’, where each entry is a list of parameters containing the indices in the same order as the parameter file.
Parameters: - problem (dict) – The problem definition
- X (numpy.matrix) – The NumPy matrix containing the model inputs of dtype=float
- Y (numpy.array) – The NumPy array containing the model outputs of dtype=float
- num_resamples (int) – The number of resamples used to compute the confidence intervals (default 1000)
- conf_level (float) – The confidence interval level (default 0.95)
- print_to_console (bool) – Print results directly to console (default False)
- num_levels (int) – The number of grid levels, must be identical to the value passed to SALib.sample.morris (default 4)
Returns: Si – A dictionary of sensitivity indices containing the following entries.
- mu - the mean elementary effect
- mu_star - the absolute of the mean elementary effect
- sigma - the standard deviation of the elementary effect
- mu_star_conf - the bootstrapped confidence interval
- names - the names of the parameters
Return type: References
[1] Morris, M. (1991). “Factorial Sampling Plans for Preliminary Computational Experiments.” Technometrics, 33(2):161-174, doi:10.1080/00401706.1991.10484804. [2] Campolongo, F., J. Cariboni, and A. Saltelli (2007). “An effective screening design for sensitivity analysis of large models.” Environmental Modelling & Software, 22(10):1509-1518, doi:10.1016/j.envsoft.2006.10.004. Examples
>>> X = morris.sample(problem, 1000, num_levels=4) >>> Y = Ishigami.evaluate(X) >>> Si = morris.analyze(problem, X, Y, conf_level=0.95, >>> print_to_console=True, num_levels=4)
-
SALib.analyze.morris.
compute_elementary_effects
(model_inputs, model_outputs, trajectory_size, delta)[source]¶ Parameters: - model_inputs (matrix of inputs to the model under analysis.) – x-by-r where x is the number of variables and r is the number of rows (a function of x and num_trajectories)
- model_outputs – an r-length vector of model outputs
- trajectory_size – a scalar indicating the number of rows in a trajectory
- delta (float) – scaling factor computed from num_levels
Returns: ee – Elementary Effects for each parameter
Return type: np.array
-
SALib.analyze.morris.
compute_grouped_metric
(ungrouped_metric, group_matrix)[source]¶ Computes the mean value for the groups of parameter values in the argument ungrouped_metric
-
SALib.analyze.morris.
compute_grouped_sigma
(ungrouped_sigma, group_matrix)[source]¶ Returns sigma for the groups of parameter values in the argument ungrouped_metric where the group consists of no more than one parameter
SALib.analyze.rbd_fast module¶
-
SALib.analyze.rbd_fast.
analyze
(problem, X, Y, M=10, print_to_console=False, seed=None)[source]¶ Performs the Random Balanced Design - Fourier Amplitude Sensitivity Test (RBD-FAST) on model outputs.
Returns a dictionary with keys ‘S1’, where each entry is a list of size D (the number of parameters) containing the indices in the same order as the parameter file.
Parameters: - problem (dict) – The problem definition
- X (numpy.array) – A NumPy array containing the model inputs
- Y (numpy.array) – A NumPy array containing the model outputs
- M (int) – The interference parameter, i.e., the number of harmonics to sum in the Fourier series decomposition (default 10)
- print_to_console (bool) – Print results directly to console (default False)
References
[1] S. Tarantola, D. Gatelli and T. Mara (2006) “Random Balance Designs for the Estimation of First Order Global Sensitivity Indices”, Reliability Engineering and System Safety, 91:6, 717-727 [2] Elmar Plischke (2010) “An effective algorithm for computing global sensitivity indices (EASI) Reliability Engineering & System Safety”, 95:4, 354-360. doi:10.1016/j.ress.2009.11.005 [3] Jean-Yves Tissot, Clémentine Prieur (2012) “Bias correction for the estimation of sensitivity indices based on random balance designs.”, Reliability Engineering and System Safety, Elsevier, 107, 205-213. doi:10.1016/j.ress.2012.06.010 [4] Jeanne Goffart, Mickael Rabouille & Nathan Mendes (2015) “Uncertainty and sensitivity analysis applied to hygrothermal simulation of a brick building in a hot and humid climate”, Journal of Building Performance Simulation. doi:10.1080/19401493.2015.1112430 Examples
>>> X = latin.sample(problem, 1000) >>> Y = Ishigami.evaluate(X) >>> Si = rbd_fast.analyze(problem, X, Y, print_to_console=False)
-
SALib.analyze.rbd_fast.
permute_outputs
(X, Y)[source]¶ Permute the output according to one of the inputs as in [_2]
References
[2] Elmar Plischke (2010) “An effective algorithm for computing global sensitivity indices (EASI) Reliability Engineering & System Safety”, 95:4, 354-360. doi:10.1016/j.ress.2009.11.005
-
SALib.analyze.rbd_fast.
unskew_S1
(S1, M, N)[source]¶ Unskew the sensivity indice (Jean-Yves Tissot, Clémentine Prieur (2012) “Bias correction for the estimation of sensitivity indices based on random balance designs.”, Reliability Engineering and System Safety, Elsevier, 107, 205-213. doi:10.1016/j.ress.2012.06.010)
SALib.analyze.sobol module¶
-
SALib.analyze.sobol.
Si_to_pandas_dict
(S_dict)[source]¶ Convert Si information into Pandas DataFrame compatible dict.
Parameters: S_dict (ResultDict) – Sobol sensitivity indices See also
Returns: tuple – Total and first order are dicts. Second order sensitivities contain a tuple of parameter name combinations for use as the DataFrame index and second order sensitivities. If no second order indices found, then returns tuple of (None, None) Return type: of total, first, and second order sensitivities. Examples
>>> X = saltelli.sample(problem, 1000) >>> Y = Ishigami.evaluate(X) >>> Si = sobol.analyze(problem, Y, print_to_console=True) >>> T_Si, first_Si, (idx, second_Si) = sobol.Si_to_pandas_dict(Si, problem)
-
SALib.analyze.sobol.
analyze
(problem, Y, calc_second_order=True, num_resamples=100, conf_level=0.95, print_to_console=False, parallel=False, n_processors=None, seed=None)[source]¶ Perform Sobol Analysis on model outputs.
Returns a dictionary with keys ‘S1’, ‘S1_conf’, ‘ST’, and ‘ST_conf’, where each entry is a list of size D (the number of parameters) containing the indices in the same order as the parameter file. If calc_second_order is True, the dictionary also contains keys ‘S2’ and ‘S2_conf’.
Parameters: - problem (dict) – The problem definition
- Y (numpy.array) – A NumPy array containing the model outputs
- calc_second_order (bool) – Calculate second-order sensitivities (default True)
- num_resamples (int) – The number of resamples (default 100)
- conf_level (float) – The confidence interval level (default 0.95)
- print_to_console (bool) – Print results directly to console (default False)
References
[1] Sobol, I. M. (2001). “Global sensitivity indices for nonlinear mathematical models and their Monte Carlo estimates.” Mathematics and Computers in Simulation, 55(1-3):271-280, doi:10.1016/S0378-4754(00)00270-6. [2] Saltelli, A. (2002). “Making best use of model evaluations to compute sensitivity indices.” Computer Physics Communications, 145(2):280-297, doi:10.1016/S0010-4655(02)00280-1. [3] Saltelli, A., P. Annoni, I. Azzini, F. Campolongo, M. Ratto, and S. Tarantola (2010). “Variance based sensitivity analysis of model output. Design and estimator for the total sensitivity index.” Computer Physics Communications, 181(2):259-270, doi:10.1016/j.cpc.2009.09.018. Examples
>>> X = saltelli.sample(problem, 1000) >>> Y = Ishigami.evaluate(X) >>> Si = sobol.analyze(problem, Y, print_to_console=True)