Parameter Sweeps and Sensitivity Analysis

Last Updated June 16, 2026

Parameter sweeps and sensitivity analysis help modelers understand how conclusions change when inputs, assumptions, parameters, initial conditions, and solver choices change. A continuous model may produce one clean trajectory, equilibrium, surface, forecast, or scenario, but that output is only one result under one configuration. Sensitivity analysis asks how fragile or robust that result is.

In systems modeling, parameter sensitivity is not a side issue. It shapes whether a model is explanatory, predictive, decision-relevant, or misleading. A small change in a growth rate, delay, recovery constant, diffusion coefficient, carrying capacity, elasticity, feedback strength, initial condition, or policy threshold can sometimes produce a large change in output. A model that appears stable under one parameter set may shift regimes, collapse, oscillate, or reverse conclusions under another.

This article introduces parameter sweeps and sensitivity analysis for systems modeling, including one-at-a-time sweeps, grid sweeps, local sensitivity, global sensitivity, scenario envelopes, parameter uncertainty, response surfaces, Sobol-style variance thinking, robustness review, reproducible workflows, and responsible interpretation.

Vintage engineering and systems modeling workspace with parameter sweep charts, sensitivity curves, contour maps, surface plots, control sliders, gears, notebooks, and drafting tools representing sensitivity analysis.
Parameter sweeps and sensitivity analysis show how model behavior changes when assumptions, inputs, or system parameters vary.

Parameter sweeps systematically vary model inputs and record outputs. Sensitivity analysis studies how strongly outputs respond to changes in inputs. Together, they help reveal which assumptions matter most, where a model is robust, where it is fragile, and where interpretation should be cautious.

The central question is not only “What does the model produce?” It is “How much does the model output depend on the values we chose?”

Why Parameter Sweeps Matter

Parameter sweeps matter because a single model run can hide dependence on assumptions. Many continuous models include rates, constants, thresholds, delays, initial conditions, elasticities, capacities, diffusion coefficients, and forcing terms that are not known with certainty. Even when parameters are estimated from data, they may remain uncertain, context-dependent, or unstable over time.

\[
y = f(\theta)
\]

Interpretation: A model output \(y\) depends on parameter values \(\theta\).

A parameter sweep evaluates the model repeatedly across a planned range of parameter values.

\[
\{f(\theta_1), f(\theta_2), \ldots, f(\theta_n)\}
\]

Interpretation: A sweep records how outputs change across selected parameter settings.

Reason for sweeping What it reveals Systems modeling value
Assumption review. Whether conclusions depend on one chosen value. Prevents overconfidence in a single run.
Robustness testing. Whether behavior persists across plausible ranges. Supports stronger interpretation when results are stable.
Threshold detection. Where outputs change sharply. Identifies tipping points, regime shifts, or policy boundaries.
Parameter prioritization. Which inputs matter most. Guides measurement, calibration, and further research.
Scenario comparison. How different assumptions produce different pathways. Improves communication of uncertainty and tradeoffs.

A sweep does not prove that selected parameter ranges are correct. It shows how the model behaves within those ranges.

Back to top ↑

What Sensitivity Analysis Means

Sensitivity analysis studies how changes in inputs affect changes in outputs. It can be local or global, qualitative or quantitative, exploratory or formal, visual or statistical.

\[
S_i=\frac{\partial y}{\partial \theta_i}
\]

Local sensitivity: The partial derivative measures how output changes near a specific parameter value.

For relative comparison, elasticity-style sensitivity is often useful:

\[
E_i=\frac{\partial y}{\partial \theta_i}\cdot\frac{\theta_i}{y}
\]

Elasticity: Relative sensitivity measures percentage-style response when units differ.

Approach Question Typical output
One-at-a-time sweep. What happens when one parameter changes? Line plot or table by parameter value.
Grid sweep. How do two or more parameters interact? Response surface, contour plot, or heat map.
Local sensitivity. Which parameter matters near this baseline? Derivative or finite-difference estimate.
Global sensitivity. Which parameters matter across a full range? Variance contribution or ranking.
Scenario sensitivity. How do outputs shift under plausible assumptions? Scenario envelope or comparison table.

Sensitivity analysis is not a single method. It is a family of practices for asking how model conclusions depend on inputs.

Back to top ↑

Parameters in Systems Models

Parameters are values that shape model behavior without usually being treated as state variables. They may describe rates, capacities, thresholds, delays, coefficients, proportions, elasticities, transfer rates, decay constants, or interaction strengths.

\[
\frac{dx}{dt}=r x\left(1-\frac{x}{K}\right)
\]

Interpretation: In a logistic model, the growth rate \(r\) and carrying capacity \(K\) strongly shape the trajectory.

Parameter type Example Possible sensitivity concern
Rate parameter. Growth, decay, infection, recovery, adoption, or depletion rate. Small changes can alter timing and cumulative outcomes.
Capacity parameter. Carrying capacity, infrastructure limit, storage capacity, or saturation level. Can shift long-run equilibrium or threshold behavior.
Delay parameter. Response lag, transport lag, recognition lag, or implementation delay. Can produce oscillation, overshoot, or policy resistance.
Elasticity parameter. Demand response, price response, behavioral response, or adoption sensitivity. Can alter feedback strength and policy interpretation.
Initial condition. Starting stock, initial exposure, baseline concentration, or initial population. Can influence transients, thresholds, and path dependence.

Parameter review should ask where values came from, what ranges are plausible, how uncertain they are, and how much they matter to the conclusion.

Back to top ↑

One-at-a-Time Sweeps

A one-at-a-time sweep changes one parameter while holding others fixed. This is simple, interpretable, and useful for early model review.

\[
y_j=f(\theta_1,\ldots,\theta_i^{(j)},\ldots,\theta_p)
\]

Interpretation: One parameter varies across selected values while the rest remain fixed.

One-at-a-time sweeps are especially helpful for teaching, debugging, intuition, and communication. They can show monotonic response, saturation, tipping points, and rough sensitivity.

Strength Limitation Review response
Easy to explain. Can miss parameter interactions. Follow with grid or global analysis if interactions matter.
Good for visual intuition. Depends on chosen baseline values. Document baseline and range choices.
Useful for debugging. May imply false independence. State which parameters were held fixed.
Low computational cost. May miss combined extreme cases. Use scenario combinations for governance review.

One-at-a-time analysis is a good first pass, but it should not be the only sensitivity method when interactions are important.

Back to top ↑

Grid Sweeps and Response Surfaces

Grid sweeps vary two or more parameters across combinations. They help reveal interaction effects that one-at-a-time sweeps can miss.

\[
y_{ij}=f(\theta_1^{(i)},\theta_2^{(j)})
\]

Interpretation: A two-parameter grid records model output across combinations of parameter values.

When outputs are plotted as a surface, contour, or heat map, the result becomes a response surface.

\[
z=f(\theta_1,\theta_2)
\]

Response surface: The model output becomes a surface over two parameter dimensions.

Grid result What it can reveal Interpretive concern
Smooth response surface. Gradual dependence on parameters. May still depend on range selection.
Sharp ridge or cliff. Threshold or regime boundary. Requires closer inspection near transition.
Flat region. Output insensitive across that range. May support robustness, but only for tested domain.
Interaction pattern. Effect of one parameter depends on another. One-at-a-time sweeps may be misleading.
Discontinuous response. Event logic, threshold, solver issue, or structural break. Needs diagnostic and mathematical review.

Grid sweeps can become computationally expensive as the number of parameters grows. That makes careful design, sampling, and documentation important.

Back to top ↑

Local Sensitivity

Local sensitivity evaluates how output changes near a baseline parameter value. It is closely connected to derivatives and finite differences.

\[
\frac{\partial y}{\partial \theta_i}\approx \frac{f(\theta_i+h)-f(\theta_i-h)}{2h}
\]

Finite-difference sensitivity: A small perturbation estimates the local response to a parameter.

Local sensitivity is useful when the baseline case is meaningful and the model is relatively smooth near that point. It can also support calibration, uncertainty review, and model debugging.

Local sensitivity issue Why it matters Review response
Choice of baseline. Sensitivity may differ elsewhere. Document baseline values and rationale.
Choice of perturbation size. Too large loses locality; too small may invite round-off error. Test multiple perturbation sizes.
Nonlinearity. Local slope may not represent full range behavior. Compare with wider sweeps.
Non-smoothness. Derivative-like estimates may be unstable. Inspect thresholds, discontinuities, and solver events.
Units differ across parameters. Raw derivative magnitudes may be hard to compare. Use normalized or elasticity-style measures.

Local sensitivity is powerful but context-dependent. It should not be generalized beyond the neighborhood it examines.

Back to top ↑

Global Sensitivity

Global sensitivity examines parameter influence across broader ranges or distributions. Instead of asking what happens near one baseline, it asks which inputs matter across a modeled uncertainty space.

\[
Y=f(\Theta)
\]

Interpretation: When parameters are uncertain, model output becomes a function of uncertain inputs.

Variance-based sensitivity thinking asks how much of output variation is associated with different inputs and their interactions.

\[
\mathrm{Var}(Y)
\]

Interpretation: Global sensitivity often studies how parameter uncertainty contributes to output variance.

Global method family General purpose Governance concern
Random sampling. Explore output distribution across parameter ranges. Parameter distributions must be justified.
Latin hypercube sampling. Cover parameter space efficiently. Sampling design should be recorded.
Morris screening. Identify influential parameters with moderate cost. Screening is not full attribution.
Sobol-style variance decomposition. Estimate main and interaction effects. Requires careful sampling and interpretation.
Scenario ensemble. Compare structured plausible futures. Scenarios are not probabilities unless defined that way.

Global sensitivity is especially useful when a model has many uncertain parameters or when parameter interactions are central to interpretation.

Back to top ↑

Uncertainty, Scenarios, and Robustness

Sensitivity analysis is closely related to uncertainty analysis, but the two are not identical. Uncertainty analysis asks how uncertain outputs are. Sensitivity analysis asks which uncertain inputs drive that uncertainty.

\[
\theta \in [\theta_{\min},\theta_{\max}]
\]

Interpretation: A parameter range defines a tested domain, not necessarily a probability distribution.

A robust conclusion holds across a relevant range of assumptions. A fragile conclusion changes under small or plausible parameter changes.

Conclusion type Pattern under sensitivity review Interpretation
Robust conclusion. Core result persists across plausible ranges. Stronger basis for interpretation.
Fragile conclusion. Core result changes under small parameter shifts. Requires caution and further review.
Threshold-dependent conclusion. Result changes near a boundary. Focus attention on tipping points and boundary uncertainty.
Scenario-dependent conclusion. Different plausible assumptions produce different outcomes. Communicate alternatives rather than one result.
Interaction-dependent conclusion. Effect depends on parameter combinations. Use grid, global, or response-surface methods.

Robustness does not mean certainty. It means the result is less dependent on the tested assumptions.

Back to top ↑

Diagnosing Fragility

A model is fragile when its conclusions shift strongly under plausible changes. Fragility may come from thresholds, nonlinear feedback, parameter interactions, near-equilibrium instability, boundary behavior, stochastic uncertainty, solver settings, or poor calibration.

Sensitivity Diagnostic Review

Range Review

Check whether parameter ranges are plausible, documented, and relevant to the modeling question.

Interaction Review

Test whether parameters combine in ways that one-at-a-time sweeps miss.

Threshold Review

Inspect sharp transitions, tipping points, discontinuities, and regime changes.

Claim Review

Separate robust claims from claims that depend on narrow parameter settings.

Fragility sign Possible cause Workflow response
Output flips sign or conclusion. Threshold, instability, or decision boundary. Map the boundary and document uncertainty.
Small parameter change produces large effect. High local sensitivity or nonlinear amplification. Estimate sensitivity and inspect mechanism.
One parameter dominates output variance. Key uncertain driver. Prioritize data collection or calibration.
Parameter interactions dominate. Combined effects matter more than single effects. Use grid, global, or scenario ensemble methods.
Solver settings affect sensitivity results. Numerical artifact or under-resolution. Run convergence and solver diagnostic checks.

Fragility is not a reason to discard a model automatically. It is a reason to narrow claims, improve data, refine structure, or disclose limits.

Back to top ↑

Systems Modeling Interpretation

In systems modeling, sensitivity analysis connects mathematics to judgment. The modeler must decide which parameters are uncertain, which ranges are plausible, which outputs matter, which interactions should be tested, and which conclusions are robust enough to communicate.

A sensitivity result can change the meaning of a model. If many parameter values lead to the same qualitative outcome, the model may support a robust pattern. If conclusions depend on a narrow parameter band, the model should be presented as conditional. If different plausible parameter sets produce different pathways, the model may be more useful as a scenario exploration tool than as a single forecast.

The stronger interpretive standard is not “we ran a sensitivity analysis.” It is: “we documented parameter ranges, tested relevant combinations, identified influential assumptions, and adjusted claims according to robustness and fragility.”

Back to top ↑

Mathematical Deepening

This section adds a more formal layer for mathematically advanced readers. Parameter sweeps and sensitivity analysis connect derivatives, finite differences, response surfaces, elasticity, local and global sensitivity, variance decomposition, uncertainty propagation, Monte Carlo sampling, Sobol-style indices, Morris screening, identifiability, calibration, robustness analysis, and model governance.

Sensitivity Building Blocks

Parameter Space

The set of possible parameter values or combinations considered by the analysis.

Response Function

The model output being evaluated as parameters vary.

Sensitivity Metric

A numerical or visual measure of output response to parameter change.

Robustness Claim

An interpretation that depends on how results behave across plausible parameter ranges.

Sensitivity Review Protocol

Define Outputs

Choose the outcome, endpoint, threshold, equilibrium, peak, timing, or cumulative measure being tested.

Select Ranges

Document parameter ranges, distributions, or scenario values and why they are plausible.

Run Sweeps

Evaluate one-at-a-time sweeps, grid sweeps, sampled parameter sets, or scenario ensembles.

Rank Influence

Identify which parameters, interactions, or assumptions most affect conclusions.

Sensitivity Governance

Parameter Record

Document parameter names, units, baselines, ranges, sources, and uncertainty rationale.

Sweep Record

Preserve sweep design, sampled values, solver settings, and output tables.

Fragility Record

Identify thresholds, unstable regions, dominant parameters, and interaction effects.

Claim Record

Align public interpretation with tested robustness and sensitivity evidence.

Back to top ↑

Examples from Systems Modeling

Parameter sweeps and sensitivity analysis appear across many systems modeling domains.

Population Dynamics

Growth rate, carrying capacity, mortality, migration, and initial population can reshape trajectories and equilibria.

Epidemiological Models

Transmission, recovery, incubation, intervention timing, and initial conditions can determine outbreak size and peak timing.

Climate Feedback Models

Forcing, feedback strength, heat uptake, delay, and sensitivity assumptions affect long-term pathways.

Resource Systems

Regeneration rates, extraction rates, demand growth, and capacity limits can shift depletion or recovery outcomes.

Infrastructure Stress

Load growth, repair rate, redundancy, failure thresholds, and response delay can change resilience conclusions.

Economic Adjustment

Elasticities, adjustment speeds, discount rates, investment response, and policy thresholds can drive divergent scenarios.

Across these examples, sensitivity analysis helps distinguish robust insight from assumption-dependent claims.

Back to top ↑

Computation and Reproducible Workflows

Computational sensitivity workflows should preserve parameter definitions, baseline values, ranges, distributions, sweep design, sampled values, solver settings, outputs, visualizations, ranking metrics, and interpretation notes. A sensitivity analysis should not be reduced to one figure without the table behind it.

A reproducible workflow makes it possible to inspect which parameter values were tested, why those ranges were chosen, how outputs were computed, and how the resulting evidence supports or limits a claim.

Back to top ↑

Python Workflow: Parameter Sweep and Sensitivity Audit

The Python workflow below sweeps growth rate and carrying capacity in a logistic model, records final values, and estimates local sensitivity at a baseline.

from __future__ import annotations

from dataclasses import asdict, dataclass
from pathlib import Path
import csv
import json
import math


@dataclass(frozen=True)
class SweepRecord:
    growth_rate: float
    carrying_capacity: float
    initial_value: float
    stop_time: float
    final_value: float
    output_metric: str
    warning: str


@dataclass(frozen=True)
class SensitivityRecord:
    parameter: str
    baseline_value: float
    perturbation: float
    baseline_output: float
    forward_output: float
    backward_output: float
    finite_difference_sensitivity: float
    elasticity_estimate: float
    warning: str


def logistic_solution(t: float, x0: float, growth_rate: float, carrying_capacity: float) -> float:
    return carrying_capacity / (1 + ((carrying_capacity - x0) / x0) * math.exp(-growth_rate * t))


def final_output(growth_rate: float, carrying_capacity: float, x0: float = 10.0, stop_time: float = 20.0) -> float:
    return logistic_solution(stop_time, x0, growth_rate, carrying_capacity)


def build_grid_sweep() -> list[SweepRecord]:
    growth_rates = [0.18, 0.25, 0.35, 0.45, 0.55]
    carrying_capacities = [80.0, 100.0, 125.0, 150.0]
    records: list[SweepRecord] = []

    for r in growth_rates:
        for k in carrying_capacities:
            records.append(
                SweepRecord(
                    growth_rate=r,
                    carrying_capacity=k,
                    initial_value=10.0,
                    stop_time=20.0,
                    final_value=final_output(r, k),
                    output_metric="final_state_value",
                    warning="Sweep results depend on tested ranges, baseline assumptions, and model structure."
                )
            )

    return records


def finite_difference_sensitivity(parameter: str, baseline_r: float = 0.35, baseline_k: float = 100.0) -> SensitivityRecord:
    h = 0.01 if parameter == "growth_rate" else 1.0
    baseline = final_output(baseline_r, baseline_k)

    if parameter == "growth_rate":
        forward = final_output(baseline_r + h, baseline_k)
        backward = final_output(baseline_r - h, baseline_k)
        baseline_value = baseline_r
    elif parameter == "carrying_capacity":
        forward = final_output(baseline_r, baseline_k + h)
        backward = final_output(baseline_r, baseline_k - h)
        baseline_value = baseline_k
    else:
        raise ValueError("parameter must be growth_rate or carrying_capacity")

    sensitivity = (forward - backward) / (2 * h)
    elasticity = sensitivity * baseline_value / baseline

    return SensitivityRecord(
        parameter=parameter,
        baseline_value=baseline_value,
        perturbation=h,
        baseline_output=baseline,
        forward_output=forward,
        backward_output=backward,
        finite_difference_sensitivity=sensitivity,
        elasticity_estimate=elasticity,
        warning="Local sensitivity depends on baseline and perturbation size."
    )


sweep_records = build_grid_sweep()
sensitivity_records = [
    finite_difference_sensitivity("growth_rate"),
    finite_difference_sensitivity("carrying_capacity")
]

output_dir = Path("outputs")
(output_dir / "tables").mkdir(parents=True, exist_ok=True)
(output_dir / "json").mkdir(parents=True, exist_ok=True)
(output_dir / "reports").mkdir(parents=True, exist_ok=True)

with (output_dir / "tables" / "parameter_sweep_grid.csv").open("w", newline="", encoding="utf-8") as handle:
    writer = csv.DictWriter(handle, fieldnames=asdict(sweep_records[0]).keys())
    writer.writeheader()
    for record in sweep_records:
        writer.writerow(asdict(record))

with (output_dir / "tables" / "local_sensitivity_audit.csv").open("w", newline="", encoding="utf-8") as handle:
    writer = csv.DictWriter(handle, fieldnames=asdict(sensitivity_records[0]).keys())
    writer.writeheader()
    for record in sensitivity_records:
        writer.writerow(asdict(record))

(output_dir / "json" / "parameter_sweep_grid.json").write_text(
    json.dumps([asdict(record) for record in sweep_records], indent=2),
    encoding="utf-8"
)

(output_dir / "json" / "local_sensitivity_audit.json").write_text(
    json.dumps([asdict(record) for record in sensitivity_records], indent=2),
    encoding="utf-8"
)

report_lines = [
    "# Parameter Sweep and Sensitivity Audit",
    "",
    "This audit records a grid sweep and local finite-difference sensitivities for a logistic model.",
    "",
    "| Parameter | Baseline | Sensitivity | Elasticity |",
    "|---|---:|---:|---:|"
]

for record in sensitivity_records:
    report_lines.append(
        f"| {record.parameter} | {record.baseline_value} | {record.finite_difference_sensitivity:.6f} | {record.elasticity_estimate:.6f} |"
    )

report_lines.append("")
report_lines.append("Sensitivity evidence should be interpreted within tested ranges and documented assumptions.")

(output_dir / "reports" / "parameter_sensitivity_audit.md").write_text(
    "\n".join(report_lines) + "\n",
    encoding="utf-8"
)

print("Wrote parameter sweep and sensitivity audit outputs.")

This workflow preserves both the sweep table and the local sensitivity estimates so interpretation can be audited.

Back to top ↑

R Workflow: Grid Sweep and Robustness Table

The R workflow below produces a grid sweep table and local sensitivity estimates for the same logistic model.

logistic_solution <- function(t, x0, growth_rate, carrying_capacity) {
  carrying_capacity / (1 + ((carrying_capacity - x0) / x0) * exp(-growth_rate * t))
}

final_output <- function(growth_rate, carrying_capacity, x0 = 10, stop_time = 20) {
  logistic_solution(stop_time, x0, growth_rate, carrying_capacity)
}

growth_rates <- c(0.18, 0.25, 0.35, 0.45, 0.55)
carrying_capacities <- c(80, 100, 125, 150)

sweep_grid <- expand.grid(
  growth_rate = growth_rates,
  carrying_capacity = carrying_capacities
)

sweep_grid$initial_value <- 10
sweep_grid$stop_time <- 20
sweep_grid$final_value <- mapply(
  final_output,
  sweep_grid$growth_rate,
  sweep_grid$carrying_capacity
)
sweep_grid$output_metric <- "final_state_value"
sweep_grid$warning <- "Sweep results depend on tested ranges, baseline assumptions, and model structure."

local_sensitivity <- function(parameter, baseline_r = 0.35, baseline_k = 100) {
  h <- ifelse(parameter == "growth_rate", 0.01, 1)
  baseline <- final_output(baseline_r, baseline_k)

  if (parameter == "growth_rate") {
    forward <- final_output(baseline_r + h, baseline_k)
    backward <- final_output(baseline_r - h, baseline_k)
    baseline_value <- baseline_r
  } else {
    forward <- final_output(baseline_r, baseline_k + h)
    backward <- final_output(baseline_r, baseline_k - h)
    baseline_value <- baseline_k
  }

  sensitivity <- (forward - backward) / (2 * h)
  elasticity <- sensitivity * baseline_value / baseline

  data.frame(
    parameter = parameter,
    baseline_value = baseline_value,
    perturbation = h,
    baseline_output = baseline,
    forward_output = forward,
    backward_output = backward,
    finite_difference_sensitivity = sensitivity,
    elasticity_estimate = elasticity,
    warning = "Local sensitivity depends on baseline and perturbation size."
  )
}

sensitivity_records <- rbind(
  local_sensitivity("growth_rate"),
  local_sensitivity("carrying_capacity")
)

dir.create("outputs/tables", recursive = TRUE, showWarnings = FALSE)

write.csv(
  sweep_grid,
  "outputs/tables/r_parameter_sweep_grid.csv",
  row.names = FALSE
)

write.csv(
  sensitivity_records,
  "outputs/tables/r_local_sensitivity_audit.csv",
  row.names = FALSE
)

print(sweep_grid)
print(sensitivity_records)

This workflow helps compare output variation across parameter combinations and local perturbations.

Back to top ↑

Haskell Workflow: Typed Sensitivity Records

Haskell can represent sensitivity results as typed records, keeping parameter metadata and interpretation warnings attached to outputs.

module Main where

data SensitivityRecord = SensitivityRecord
  { parameterName :: String
  , baselineValue :: Double
  , testedRange :: String
  , sensitivityType :: String
  , outputMetric :: String
  , interpretationWarning :: String
  } deriving (Show)

records :: [SensitivityRecord]
records =
  [ SensitivityRecord
      "growth_rate"
      0.35
      "0.18 to 0.55"
      "grid_sweep_and_local_sensitivity"
      "final_state_value"
      "Growth-rate sensitivity depends on time horizon and baseline assumptions."
  , SensitivityRecord
      "carrying_capacity"
      100.0
      "80 to 150"
      "grid_sweep_and_local_sensitivity"
      "final_state_value"
      "Capacity sensitivity should not be generalized beyond the tested range."
  , SensitivityRecord
      "initial_value"
      10.0
      "context-dependent"
      "scenario_sensitivity"
      "trajectory_shape"
      "Initial conditions can affect transient behavior and threshold crossing."
  , SensitivityRecord
      "solver_settings"
      0.0
      "method-dependent"
      "computational_sensitivity"
      "numerical_result"
      "Sensitivity results should be checked against numerical reliability diagnostics."
  ]

main :: IO ()
main =
  mapM_ print records

The typed workflow makes sensitivity evidence part of the model record instead of an informal figure caption.

Back to top ↑

SQL Workflow: Parameter Sensitivity Registry

SQL can document parameter assumptions, sweep designs, and review warnings for reproducible model governance.

CREATE TABLE parameter_sensitivity_registry (
    sensitivity_key TEXT PRIMARY KEY,
    sensitivity_name TEXT NOT NULL,
    analytical_role TEXT NOT NULL,
    systems_modeling_role TEXT NOT NULL,
    review_warning TEXT NOT NULL
);

INSERT INTO parameter_sensitivity_registry VALUES
(
  'one_at_a_time_sweep',
  'One-at-a-time sweep',
  'Varies one parameter while holding others fixed.',
  'Supports intuition, debugging, and simple communication.',
  'Can miss parameter interactions and depends on baseline values.'
);

INSERT INTO parameter_sensitivity_registry VALUES
(
  'grid_sweep',
  'Grid sweep',
  'Evaluates combinations of parameter values.',
  'Reveals interactions, thresholds, and response surfaces.',
  'Computational cost grows quickly with parameter dimension.'
);

INSERT INTO parameter_sensitivity_registry VALUES
(
  'local_sensitivity',
  'Local sensitivity',
  'Estimates response near a baseline parameter value.',
  'Identifies influential parameters around a chosen scenario.',
  'Should not be generalized beyond the local neighborhood.'
);

INSERT INTO parameter_sensitivity_registry VALUES
(
  'global_sensitivity',
  'Global sensitivity',
  'Assesses influence across broader ranges or distributions.',
  'Ranks uncertain drivers and interaction effects.',
  'Requires justified ranges, sampling design, and interpretation discipline.'
);

INSERT INTO parameter_sensitivity_registry VALUES
(
  'robustness_review',
  'Robustness review',
  'Checks whether conclusions persist across plausible assumptions.',
  'Separates robust conclusions from fragile claims.',
  'Robustness only applies to tested ranges and model structures.'
);

INSERT INTO parameter_sensitivity_registry VALUES
(
  'fragility_review',
  'Fragility review',
  'Identifies thresholds, reversals, and assumption-dependent conclusions.',
  'Helps narrow claims and prioritize further data collection.',
  'Fragility is a warning for interpretation, not automatic model rejection.'
);

SELECT
    sensitivity_name,
    analytical_role,
    systems_modeling_role,
    review_warning
FROM parameter_sensitivity_registry
ORDER BY sensitivity_key;

This registry ties sensitivity interpretation to one-at-a-time sweeps, grid sweeps, local sensitivity, global sensitivity, robustness review, fragility review, and governance records.

Back to top ↑

GitHub Repository

The companion repository for this article is designed as a reproducible mathematical-modeling workspace. It supports parameter sweeps, local sensitivity estimates, grid sweep outputs, response-surface metadata, scenario envelopes, robustness tables, fragility records, SQL governance tables, generated reports, advanced mathematical audit logic, and reusable calculator scripts.

Back to top ↑

Interpretive Limits and Responsible Use

Parameter sweeps and sensitivity analysis help reveal dependence on assumptions, but they do not validate a model by themselves. A robust result within a chosen parameter range may fail outside that range. A global sensitivity ranking depends on the distributions or ranges selected. A local derivative depends on the baseline and perturbation size. A scenario envelope is not a probability forecast unless probability assumptions are defined.

Responsible use requires documentation. Preserve parameter names, units, baseline values, tested ranges, range sources, sampling methods, solver settings, output metrics, generated tables, figures, sensitivity metrics, threshold records, and interpretation notes. Distinguish robust findings from fragile findings. Explain which conclusions depend on parameter assumptions and which remain stable across tested ranges.

The central question is not only “Which parameter matters most?” It is “Under what ranges, assumptions, metrics, and model structures does that parameter matter, and how should the claim be limited?”

Back to top ↑

Back to top ↑

Further Reading

  • Hamby, D.M. (1994) ‘A review of techniques for parameter sensitivity analysis of environmental models’, Environmental Monitoring and Assessment, 32, pp. 135–154.
  • Helton, J.C. (1993) ‘Uncertainty and sensitivity analysis techniques for use in performance assessment for radioactive waste disposal’, Reliability Engineering & System Safety, 42(2–3), pp. 327–367.
  • Iooss, B. and Lemaître, P. (2015) ‘A review on global sensitivity analysis methods’, in Dellino, G. and Meloni, C. (eds.) Uncertainty Management in Simulation-Optimization of Complex Systems. Boston, MA: Springer, pp. 101–122.
  • Marino, S., Hogue, I.B., Ray, C.J. and Kirschner, D.E. (2008) ‘A methodology for performing global uncertainty and sensitivity analysis in systems biology’, Journal of Theoretical Biology, 254(1), pp. 178–196.
  • Morris, M.D. (1991) ‘Factorial sampling plans for preliminary computational experiments’, Technometrics, 33(2), pp. 161–174.
  • Pianosi, F., Beven, K., Freer, J., Hall, J.W., Rougier, J., Stephenson, D.B. and Wagener, T. (2016) ‘Sensitivity analysis of environmental models: A systematic review with practical workflow’, Environmental Modelling & Software, 79, pp. 214–232.
  • Saltelli, A., Chan, K. and Scott, E.M. (eds.) (2000) Sensitivity Analysis. Chichester: Wiley.
  • Saltelli, A., Ratto, M., Andres, T., Campolongo, F., Cariboni, J., Gatelli, D., Saisana, M. and Tarantola, S. (2008) Global Sensitivity Analysis: The Primer. Chichester: Wiley.
  • Sobol, I.M. (1993) ‘Sensitivity estimates for nonlinear mathematical models’, Mathematical Modelling and Computational Experiments, 1, pp. 407–414.
  • Smith, R.C. (2013) Uncertainty Quantification: Theory, Implementation, and Applications. Philadelphia, PA: Society for Industrial and Applied Mathematics.

Back to top ↑

References

  • Hamby, D.M. (1994) ‘A review of techniques for parameter sensitivity analysis of environmental models’, Environmental Monitoring and Assessment, 32, pp. 135–154.
  • Helton, J.C. (1993) ‘Uncertainty and sensitivity analysis techniques for use in performance assessment for radioactive waste disposal’, Reliability Engineering & System Safety, 42(2–3), pp. 327–367.
  • Iooss, B. and Lemaître, P. (2015) ‘A review on global sensitivity analysis methods’, in Dellino, G. and Meloni, C. (eds.) Uncertainty Management in Simulation-Optimization of Complex Systems. Boston, MA: Springer, pp. 101–122.
  • Marino, S., Hogue, I.B., Ray, C.J. and Kirschner, D.E. (2008) ‘A methodology for performing global uncertainty and sensitivity analysis in systems biology’, Journal of Theoretical Biology, 254(1), pp. 178–196.
  • Morris, M.D. (1991) ‘Factorial sampling plans for preliminary computational experiments’, Technometrics, 33(2), pp. 161–174.
  • Pianosi, F., Beven, K., Freer, J., Hall, J.W., Rougier, J., Stephenson, D.B. and Wagener, T. (2016) ‘Sensitivity analysis of environmental models: A systematic review with practical workflow’, Environmental Modelling & Software, 79, pp. 214–232.
  • Saltelli, A., Chan, K. and Scott, E.M. (eds.) (2000) Sensitivity Analysis. Chichester: Wiley.
  • Saltelli, A., Ratto, M., Andres, T., Campolongo, F., Cariboni, J., Gatelli, D., Saisana, M. and Tarantola, S. (2008) Global Sensitivity Analysis: The Primer. Chichester: Wiley.
  • Sobol, I.M. (1993) ‘Sensitivity estimates for nonlinear mathematical models’, Mathematical Modelling and Computational Experiments, 1, pp. 407–414.
  • Smith, R.C. (2013) Uncertainty Quantification: Theory, Implementation, and Applications. Philadelphia, PA: Society for Industrial and Applied Mathematics.

Back to top ↑

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top