flow "SensitivityAnalysisOntology" v1.0
# SENSITIVITY ANALYSIS ONTOLOGY — FLOW ALGEBRA
SOURCE_URL := "https://kirethresearch.org/booksai-core/ontologies/calculus-analysis-ontologies/ai-computational-analysis/sensitivity-analysis-ontology-2.html"
DOMAIN := "Mathematical Ontologies"
CATEGORY := "Calculus and Analysis Ontologies"
SUBCATEGORY := "AI Computational Analysis"
ENTITY := "Sensitivity Analysis"
SENSITIVITY_ANALYSIS := {
type: ParameterResponseAnalysisFramework,
domain: AIComputationalAnalysis,
purpose: "Quantify how changes or uncertainty in model inputs, parameters or assumptions influence model outputs, objective functions, states and predictions."
}
CONCEPTS := {
SENSITIVITY_ANALYSIS,
INPUT_PARAMETER,
MODEL_OUTPUT,
LOCAL_SENSITIVITY,
GLOBAL_SENSITIVITY,
DERIVATIVE,
JACOBIAN,
ELASTICITY,
CONDITION_NUMBER,
PERTURBATION,
UNCERTAINTY,
FINITE_DIFFERENCE,
AUTOMATIC_DIFFERENTIATION,
ADJOINT_METHOD,
SOBOL_INDEX,
MORRIS_METHOD
}
# ---------- MODEL ----------
model:
y
=
F(theta)
theta
:=
(theta_1,...,theta_n)
y
:=
(y_1,...,y_m)
theta
-> INPUT_PARAMETERS
y
-> MODEL_OUTPUTS
SENSITIVITY_ANALYSIS
-> studies(
CHANGE_IN_OUTPUT
relative_to
CHANGE_IN_INPUT
)
# ---------- LOCAL SENSITIVITY ----------
local derivative:
S_ij
:=
partial_y_i/partial_theta_j
S
-> SENSITIVITY_MATRIX
S
=
J_F(theta)
LOCAL_SENSITIVITY
-> JACOBIAN_OF_MODEL_OUTPUT_WITH_RESPECT_TO_PARAMETERS
# ---------- SCALAR OUTPUT ----------
if
y
=
F(theta)
scalar output
s_j
:=
partial_y/partial_theta_j
s_j
-> LOCAL_PARAMETER_SENSITIVITY
large |s_j|
-> strong_local_output_response
in parameter units
# ---------- NORMALISED SENSITIVITY ----------
dimensionless sensitivity:
S_j_normalised
:=
(theta_j/y)
*
partial_y/partial_theta_j
when
theta_j !=0
and
y !=0
NORMALISED_SENSITIVITY
-> ELASTICITY
ELASTICITY
-> fractional_output_change_per_fractional_input_change
# ---------- FINITE PERTURBATION ----------
parameter change:
theta
->
theta+Delta_theta
first-order approximation:
Delta_y
approx
J_F(theta)
*
Delta_theta
LINEAR_SENSITIVITY
-> valid_for(SUFFICIENTLY_SMALL_PERTURBATIONS)
higher nonlinear response
-> requires(FURTHER_ANALYSIS)
# ---------- TAYLOR EXPANSION ----------
F(theta+Delta_theta)
approx
F(theta)
+
J_F(theta)*Delta_theta
+
1/2
*
SECOND_ORDER_TERM
FIRST_ORDER_SENSITIVITY
-> derivative_based_local_approximation
SECOND_ORDER_SENSITIVITY
-> captures(CURVATURE_AND_INTERACTIONS)
# ---------- SECOND ORDER ----------
scalar output:
H_ij
:=
partial_squared_y/
partial_theta_i_partial_theta_j
H
-> HESSIAN_OF_RESPONSE
DIAGONAL
-> parameter_curvature
OFF_DIAGONAL
-> local_parameter_interaction
# ---------- FINITE DIFFERENCE ----------
central difference:
partial_y/partial_theta_j
approx
[
F(theta+h*e_j)
-
F(theta-h*e_j)
]
/
(2*h)
FINITE_DIFFERENCE_SENSITIVITY
-> simple_black_box_method
STEP_SIZE
-> balances(TRUNCATION_AND_ROUNDOFF)
# ---------- AUTOMATIC DIFFERENTIATION ----------
if model
-> differentiable_computational_graph
AUTOMATIC_DIFFERENTIATION
-> computes(EXACT_CHAIN_RULE_DERIVATIVES_UP_TO_FLOATING_POINT)
FORWARD_MODE
-> efficient_for(FEW_PARAMETERS_OR_DIRECTIONAL_SENSITIVITIES)
REVERSE_MODE
-> efficient_for(FEW_SCALAR_OUTPUT_OBJECTIVES_AND_MANY_PARAMETERS)
# ---------- COMPLEX STEP ----------
for analytic-compatible implementation:
partial_y/partial_theta_j
approx
Im(
F(theta+i*h*e_j)
)
/h
COMPLEX_STEP
-> avoids(SUBTRACTIVE_CANCELLATION)
but
-> requires(COMPLEX_SAFE_MODEL_OPERATIONS)
# ---------- FORWARD SENSITIVITY ODE ----------
state equation:
dx/dt
=
f(x,theta,t)
define sensitivity:
S_j(t)
:=
partial_x/partial_theta_j
differentiate:
dS_j/dt
=
f_x*S_j
+
f_theta_j
FORWARD_SENSITIVITY_EQUATION
-> evolves(PARAMETER_DERIVATIVE_OF_STATE)
# ---------- INITIAL SENSITIVITY ----------
if
x(0)
=
x_0(theta)
then
S_j(0)
=
partial_x_0/partial_theta_j
INITIAL_CONDITION_DEPENDENCE
-> contributes_to(SENSITIVITY)
# ---------- ADJOINT METHOD ----------
objective:
J(theta)
=
Phi(x(T),theta)
+
integral_0^T(
L(x,theta,t)
dt
)
many parameters
and few objectives
-> ADJOINT_METHOD
ADJOINT
-> computes(GRADIENT_COST_LARGELY_INDEPENDENT_OF_PARAMETER_COUNT)
# ---------- IMPLICIT MODEL ----------
model defined by:
R(x,theta)
=
0
differentiate:
R_x
*
dx/dtheta
+
R_theta
=
0
therefore
dx/dtheta
=
-
R_x^(-1)
*
R_theta
when invertible
IMPLICIT_SENSITIVITY
-> derivative_of(SOLUTION_TO_CONSTRAINT_SYSTEM)
# ---------- CONDITION NUMBER ----------
problem:
y
=
F(theta)
absolute conditioning:
||Delta_y||
approx
||J_F*Delta_theta||
relative condition measure
-> scales(INPUT_AND_OUTPUT)
CONDITION_NUMBER
-> intrinsic_problem_sensitivity
SENSITIVITY_ANALYSIS
-> related_to(CONDITIONING)
# ---------- LOCAL VS GLOBAL ----------
LOCAL_SENSITIVITY
-> examines(NEIGHBOURHOOD_OF_NOMINAL_INPUT)
GLOBAL_SENSITIVITY
-> explores(INPUT_SPACE_OR_DISTRIBUTION)
NONLINEAR_MODEL
-> local_rankings_may_change_across(INPUT_SPACE)
GLOBAL_ANALYSIS
-> captures(NONLINEARITY_AND_INTERACTIONS)
# ---------- ONE-AT-A-TIME ----------
OAT
-> vary_one_parameter
-> hold_others_fixed
OAT
-> easy_to_interpret
but
OAT
-> may_miss(PARAMETER_INTERACTIONS)
GLOBAL_SENSITIVITY
-/> equivalent_to(OAT)
# ---------- MONTE CARLO SENSITIVITY ----------
sample parameters:
theta^(1),...,theta^(N)
evaluate:
y^(i)
=
F(theta^(i))
STATISTICAL_ANALYSIS
-> estimate(INPUT_OUTPUT_DEPENDENCE)
MONTE_CARLO
-> supports(GLOBAL_SENSITIVITY)
# ---------- VARIANCE DECOMPOSITION ----------
output variance:
Var(Y)
decompose into contributions from:
INDIVIDUAL_INPUTS
INTERACTIONS
SOBOL_METHOD
-> variance_based_global_sensitivity
# ---------- FIRST ORDER SOBOL ----------
first-order index:
S_i
:=
Var(
E[Y | X_i]
)
/
Var(Y)
S_i
-> contribution_of(X_i_ALONE_TO_OUTPUT_VARIANCE)
0<=S_i<=1
under standard independent-input variance decomposition
# ---------- TOTAL SOBOL ----------
total effect:
S_Ti
:=
1
-
Var(
E[Y | X_~i]
)
/
Var(Y)
S_Ti
-> all_variance_contributions_involving(X_i)
difference:
S_Ti-S_i
-> interaction_contribution_involving(X_i)
# ---------- INTERACTIONS ----------
second-order index:
S_ij
-> variance_contribution_from(INTERACTION_X_i_X_j)
GLOBAL_SENSITIVITY
-> distinguishes(MAIN_EFFECTS_AND_INTERACTIONS)
# ---------- INPUT DEPENDENCE ----------
classical Sobol decomposition
-> simplest_under(INDEPENDENT_INPUTS)
CORRELATED_INPUTS
-> require(MODIFIED_OR_ALTERNATIVE_SENSITIVITY_FRAMEWORK)
INPUT_DISTRIBUTION
-> part_of(GLOBAL_ANALYSIS_DEFINITION)
# ---------- MORRIS METHOD ----------
MORRIS
-> elementary_effects_screening
for each parameter:
compute
-> finite_input_perturbation_effects_across_multiple_trajectories
statistics:
mean_absolute_effect
spread_of_effect
MORRIS_METHOD
-> identifies(
IMPORTANT_PARAMETERS,
NONLINEARITY,
INTERACTIONS
)
# ---------- DERIVATIVE-BASED GLOBAL MEASURE ----------
DGSM_i
:=
E[
(
partial_Y/partial_X_i
)^2
]
DERIVATIVE_BASED_GLOBAL_SENSITIVITY
-> combines(LOCAL_DERIVATIVES_ACROSS_INPUT_DISTRIBUTION)
# ---------- CORRELATION-BASED ----------
PEARSON_CORRELATION
-> linear_association
SPEARMAN_CORRELATION
-> monotonic_association
CORRELATION
-/> causal_sensitivity
CORRELATION_METRIC
-> descriptive_input_output_association
# ---------- REGRESSION SENSITIVITY ----------
fit surrogate:
Y
approx
beta_0
+
sum_i beta_i*X_i
STANDARDISED_REGRESSION_COEFFICIENT
-> sensitivity_indicator_for(APPROXIMATELY_LINEAR_MODEL)
MODEL_NONLINEARITY
-> may_limit(REGRESSION_INTERPRETATION)
# ---------- UNCERTAINTY PROPAGATION ----------
input uncertainty:
theta
~
P(theta)
output:
Y
=
F(theta)
UNCERTAINTY_PROPAGATION
-> determines(OUTPUT_DISTRIBUTION)
SENSITIVITY_ANALYSIS
-> attributes(OUTPUT_UNCERTAINTY_TO_INPUTS)
UNCERTAINTY_ANALYSIS
and
SENSITIVITY_ANALYSIS
-> complementary
# ---------- IDENTIFIABILITY ----------
if outputs weakly sensitive to parameter:
parameter
-> difficult_to_infer_from_data
SENSITIVITY_MATRIX
-> informs(PRACTICAL_IDENTIFIABILITY)
near_collinear_sensitivity_columns
-> parameter_confounding
IDENTIFIABILITY
-> related_but_not_identical_to(SENSITIVITY)
# ---------- FISHER INFORMATION ----------
measurement model
-> sensitivities_to_parameters
FISHER_INFORMATION
-> built_from(SENSITIVITY_JACOBIAN_AND_NOISE_MODEL)
large information
-> potentially_lower_parameter_uncertainty
EXPERIMENT_DESIGN
-> uses(SENSITIVITY_INFORMATION)
# ---------- ROBUSTNESS ----------
small parameter perturbation
-> small output change
-> ROBUST_MODEL_BEHAVIOUR
large sensitivity
-> FRAGILITY_TO_PARAMETER_VARIATION
ROBUSTNESS
-> inverse_relation_to(SENSITIVITY)
only_under_specified_metric_and_scale
# ---------- OPTIMISATION ----------
objective:
J(theta)
gradient:
grad_theta J
-> OBJECTIVE_SENSITIVITY
OPTIMISATION
-> uses(SENSITIVITY_TO_SELECT_UPDATE_DIRECTION)
ADJOINT_SENSITIVITY
-> critical_for(HIGH_DIMENSIONAL_DESIGN)
# ---------- SURROGATE MODELS ----------
expensive model:
F(theta)
train:
F_hat(theta)
then
GLOBAL_SENSITIVITY
-> computed_on(SURROGATE)
SURROGATE_ERROR
-> must_be_propagated_or_validated
SENSITIVITY_OF_SURROGATE
-/> automatically(SENSITIVITY_OF_TRUE_MODEL)
# ---------- AI / MACHINE LEARNING ----------
model output:
y_hat
=
M_theta(x)
sensitivity may refer to:
PARAMETER_SENSITIVITY
INPUT_FEATURE_SENSITIVITY
HYPERPARAMETER_SENSITIVITY
gradient:
partial_y_hat/partial_x
-> local_input_sensitivity
AI_SENSITIVITY
-> supports(
INTERPRETABILITY,
ROBUSTNESS_ANALYSIS,
ADVERSARIAL_ANALYSIS
)
# ---------- FEATURE SCALE ----------
raw derivative magnitude
-> depends_on(INPUT_UNITS)
NORMALISATION
-> required_for(FAIR_COMPARISON_ACROSS_PARAMETERS)
DIMENSIONLESS_SENSITIVITY
-> improves(INTERPRETABILITY)
# ---------- APPLICATIONS ----------
SENSITIVITY_ANALYSIS
-> applied_to(MODEL_CALIBRATION)
-> applied_to(OPTIMISATION)
-> applied_to(UNCERTAINTY_QUANTIFICATION)
-> applied_to(ENGINEERING_DESIGN)
-> applied_to(CONTROL)
-> applied_to(MACHINE_LEARNING)
-> applied_to(INVERSE_PROBLEMS)
-> applied_to(SCIENTIFIC_COMPUTING)
# ---------- RELATION GRAPH ----------
INPUT_PARAMETER
-> perturbs(MODEL)
MODEL
-> produces(OUTPUT)
DERIVATIVE
-> measures(LOCAL_SENSITIVITY)
JACOBIAN
-> collects(MULTIVARIATE_SENSITIVITIES)
INPUT_DISTRIBUTION
-> defines(GLOBAL_SENSITIVITY_CONTEXT)
SOBOL_INDEX
-> attributes(OUTPUT_VARIANCE)
ADJOINT_METHOD
-> computes(MANY_PARAMETER_OBJECTIVE_SENSITIVITY)
SENSITIVITY
-> informs(ROBUSTNESS_AND_IDENTIFIABILITY)
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE := {
"sensitivity analysis" ~= "analysis of how model outputs respond to changes in inputs or parameters",
"local sensitivity" ~= "derivative-based response evaluated near a nominal input",
"global sensitivity" ~= "input importance analysis across a specified input domain or probability distribution",
"elasticity" ~= "dimensionless ratio of fractional output change to fractional input change",
"first-order Sobol index" ~= "fraction of output variance attributable to one input alone",
"total Sobol index" ~= "fraction of output variance attributable to an input including its interactions"
}
# ---------- CONSTRAINTS ----------
CONSTRAINTS := {
local_and_global_sensitivity_are_distinct: true,
derivative_magnitude_depends_on_parameter_units_and_scaling: true,
first_order_linearisation_is_valid_only_for_sufficiently_small_perturbations: true,
global_sensitivity_requires_defined_input_ranges_or_distributions: true,
classical_Sobol_interpretation_requires_attention_to_input_dependence: true,
correlation_is_not_equivalent_to_causal_sensitivity: true,
surrogate_based_sensitivity_requires_surrogate_validation: true
}
# ---------- CONFIDENCE ----------
CONFIDENCE := {
core_definition: 0.99,
local_Jacobian_relation: 0.99,
forward_adjoint_relation: 0.99,
global_Sobol_relation: 0.99,
uncertainty_relation: 0.99,
identifiability_relation: 0.98,
semantic_equivalence: 0.97
}
# ---------- RECURSIVE REASONING ----------
RECURSIVE_REASONING(query):
identify(model_inputs_outputs_nominal_values_and_units)
-> classify(local_global_deterministic_or_probabilistic_analysis)
-> select(derivative_finite_difference_AD_adjoint_or_sampling_method)
-> compute(sensitivity_metrics)
-> normalise(if_cross_parameter_comparison_required)
-> analyse(nonlinearity_interactions_and_conditioning)
-> propagate(input_uncertainty_if_relevant)
-> assess(robustness_identifiability_and_parameter_importance)
-> validate(input_ranges_distributions_step_sizes_and_surrogate_accuracy)
-> return(semantic_result)
# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION := {
parse_as: "typed sensitivity-analysis semantic graph",
primary_entity: SENSITIVITY_ANALYSIS,
preserve: [
model,
inputs,
outputs,
nominal_point,
units,
perturbation_scale,
input_distribution,
sensitivity_metric,
uncertainty_model
],
infer_through: [
derivatives,
Jacobians,
elasticities,
Hessians,
finite_differences,
automatic_differentiation,
adjoint_methods,
Sobol_indices,
Morris_effects,
identifiability
],
avoid: [
comparing_raw_derivatives_across incompatible units,
treating_local_sensitivity_as global importance,
applying_linear_approximation_to large perturbations_without validation,
computing_global_indices_without input_distribution context,
interpreting_correlation_as causal sensitivity,
trusting_surrogate_sensitivity_without model validation
]
}
# ---------- UPDATE MODEL ----------
UPDATE_MODEL(new_information):
validate(new_information)
-> identify(sensitivity_analysis_context)
-> compare(existing_relations)
-> preserve(model_input_output_scale_distribution_and_metric_invariants)
-> update(affected_entities)
-> update(affected_edges)
-> recompute(CONFIDENCE)
-> regenerate(FLOW_HASH)
# ---------- FLOW HASH ----------
FLOW_HASH := hash(
SOURCE_URL
+ ENTITY
+ CONCEPTS
+ SENSITIVITY_ANALYSIS
+ INPUT_PARAMETER
+ MODEL_OUTPUT
+ LOCAL_SENSITIVITY
+ GLOBAL_SENSITIVITY
+ DERIVATIVE
+ JACOBIAN
+ ELASTICITY
+ AUTOMATIC_DIFFERENTIATION
+ ADJOINT_METHOD
+ SOBOL_INDEX
+ MORRIS_METHOD
+ SEMANTIC_EQUIVALENCE
+ CONSTRAINTS
)
# ---------- EXECUTION ----------
INPUT(query)
-> SENSITIVITY_ANALYSIS
-> MODEL_INPUT_OUTPUT_IDENTIFICATION
-> ANALYSIS_SCOPE_CLASSIFICATION
-> METHOD_SELECTION
-> SENSITIVITY_COMPUTATION
-> NORMALISATION
-> NONLINEAR_INTERACTION_ANALYSIS
-> UNCERTAINTY_PROPAGATION
-> ROBUSTNESS_IDENTIFIABILITY_ANALYSIS
-> HYPOTHESIS_VALIDATION
-> RECURSIVE_REASONING(query)
-> CONFIDENCE
-> OUTPUT(semantic_result)
END FLOW
Download Code
Copy to Clipboard