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: object

Perform 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.

mercurial.utils.sensitivity.create_default_problem() Dict[source]

Create a default problem definition for MERCURIAL parameters.

Returns:
dict

Problem specification with parameter names and bounds.

mercurial.utils.sensitivity.example_model(params: ndarray) float[source]

Deterministic synthetic model for sensitivity testing (no random noise). Output is a smooth function of parameters.