salib
Global sensitivity analysis for Rust, implemented from the primary literature. Bit-deterministic by construction.
Quickstart
[]
= "0.1"
use PI;
use *;
use ;
use estimate_saltelli2010;
Methods
| Method | Function | Reference |
|---|---|---|
| Variance-based (Sobol') | ||
| Saltelli 2010 | estimate_saltelli2010 |
Saltelli et al. (2010) Comp. Phys. Comm. 181(2) |
| Jansen | estimate_jansen |
Jansen (1999) Comp. Phys. Comm. 117(1-2) |
| Janon | estimate_janon |
Janon et al. (2014) Math. Comp. Sim. 107 |
| Owen | estimate_owen |
Owen (2013) ACM Trans. Model. Comp. Sim. 23(1) |
| Given-data Sobol' | estimate_given_data_sobol |
Plischke et al. (2013) Eur. J. Oper. Res. 226(3) |
| Elementary effects | ||
| Morris | estimate_morris_effects |
Morris (1991) Technometrics 33(2) |
| Grouped Morris | estimate_grouped_morris_effects |
Campolongo et al. (2007) Env. Mod. Soft. 22(10) |
| Frequency-based | ||
| FAST / eFAST | estimate_fast |
Cukier et al. (1973); Saltelli et al. (1999) |
| RBD-FAST | estimate_rbd_fast |
Tarantola et al. (2006) Rel. Eng. Sys. Safety 91(6) |
| Distribution-based | ||
| Borgonovo delta | estimate_borgonovo_delta |
Borgonovo (2007) Rel. Eng. Sys. Safety 92(6) |
| PAWN | estimate_pawn |
Pianosi et al. (2015) Env. Mod. Soft. 67 |
| QOSA | estimate_qosa |
Fort et al. (2016) Stat. Comp. 26(1-2) |
| Derivative-based | ||
| DGSM | estimate_dgsm |
Sobol' & Kucherenko (2009) Math. Comp. Sim. 79(10) |
| Regression | ||
| SRC / SRRC / PCC / PRCC | estimate_regression_indices |
Saltelli & Marivoet (1990) Comp. Stat. Data Anal. 9(1) |
| Surrogate | ||
| PCE (full OLS) | fit_full_pce |
Xiu & Karniadakis (2002) SIAM J. Sci. Comp. 24(2) |
| PCE (sparse LARS/OMP) | fit_sparse_pce |
Blatman & Sudret (2011) J. Comp. Phys. 230(6) |
| HDMR | estimate_hdmr |
Li et al. (2002) J. Phys. Chem. A 106(37) |
| Active subspaces | compute_active_subspace |
Constantine (2015) Active Subspaces, SIAM |
| Game-theoretic | ||
| Shapley effects | estimate_shapley |
Song et al. (2016) SIAM/ASA J. Unc. Quant. 4(1) |
| Experimental design | ||
| ANOVA (two- and three-way) | estimate_anova_two_way |
Fisher (1925) Statistical Methods |
| G-theory (D-study) | estimate_g_theory_pir |
Brennan (2001) Generalizability Theory, Springer |
| Discrepancy (L2-star) | compute_discrepancy |
Hickernell (1998) in Monte Carlo and Quasi-Monte Carlo Methods |
| Fractional factorial | estimate_fractional_factorial |
Box et al. (1978) Statistics for Experimenters |
Crate structure
salib is a facade that re-exports subcrates. Use it for convenience,
or depend on individual crates for finer control.
| Crate | Role |
|---|---|
salib-core |
Problem, Factor, Distribution, RngState, deterministic reductions |
salib-samplers |
LHS, Sobol' QMC, Saltelli, Morris trajectories, FAST/eFAST, Iman-Conover |
salib-estimators |
All estimators listed above |
salib-surrogate |
PCE, sparse PCE, active subspaces |
salib-shapley |
Shapley effects |
salib-validation |
Ishigami, Sobol' G, Morris test functions with closed-form indices |
salib-cli |
salib sample, salib run, salib analyze |
Feature flags
| Flag | Default | Effect |
|---|---|---|
samplers |
yes | Sampling designs (LHS, Sobol', Saltelli, Morris, FAST) |
estimators |
yes | All sensitivity estimators |
parallel |
yes | Rayon-based parallel reductions |
surrogate |
no | PCE, HDMR, active subspaces |
shapley |
no | Shapley effects |
validation |
no | Analytic test functions |
serde |
no | Serialize/Deserialize on all result types |
arrow |
no | RecordBatch conversions for Arrow interop |
polars |
no | DataFrame conversions (implies arrow) |
full |
no | Everything except serde, arrow, polars |
Bit-determinism
Identical RngState seeds produce identical results regardless of thread
count. Parallel reductions use tree-structured accumulation to eliminate
float-associativity nondeterminism under rayon. Disable parallel for
serial-only builds; results remain identical.
Citation
If you use salib in published research, please cite:
For individual methods, see the references in the method table above.
MSRV
1.87
License
MIT OR Apache-2.0, at your option.