mercurial.utils.sensitivity module
Sobol sensitivity analysis for model parameters (Priority 7.5).
- class mercurial.utils.sensitivity.SobolSensitivity(problem: Dict, n_samples: int = 1024, calc_second_order: bool = True, n_processors: int = 1)[source]
Bases:
objectPerform Sobol sensitivity analysis on model parameters.
Determines which parameters most influence a given output metric.
Methods
analyze(Y)Compute Sobol indices.
evaluate_model(model_func[, batch_size])Evaluate model for all parameter samples.
get_top_parameters(Si[, threshold, order])Return parameters with sensitivity above threshold, sorted by importance.
- __init__(problem: Dict, n_samples: int = 1024, calc_second_order: bool = True, n_processors: int = 1)[source]
- Parameters:
- problemdict
SALib problem definition with ‘num_vars’, ‘names’, ‘bounds’.
- n_samplesint
Number of samples (must be power of 2).
- calc_second_orderbool
Whether to compute second-order interactions.
- n_processorsint
Number of CPUs for parallel evaluation.
- analyze(Y: ndarray) Dict[source]
Compute Sobol indices.
- Returns:
- dict
Contains ‘S1’ (first-order), ‘ST’ (total-order), and optionally ‘S2’ (second-order).
- evaluate_model(model_func: Callable[[ndarray], float], batch_size: int = 100) ndarray[source]
Evaluate model for all parameter samples.
- Parameters:
- model_funcfunction
Takes a parameter vector (1D array) and returns a scalar output.
- batch_sizeint
Number of samples to evaluate in each batch (for memory).
- Returns:
- Ynp.ndarray
Model outputs for each sample.
- get_top_parameters(Si: Dict, threshold: float = 0.05, order: str = 'total') List[Tuple[str, float]][source]
Return parameters with sensitivity above threshold, sorted by importance.
- Parameters:
- Sidict
Result from analyze().
- thresholdfloat
Minimum sensitivity value to include.
- orderstr
‘first’ for S1, ‘total’ for ST.