Skip to main content

System Identification Ontology

Control Theory
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 12 September 2026
Audio Overview
AI INTERPRETATION NOTE
This Flow Algebra defines the System Identification Ontology within the Kireth Research Semantic Library. System identification studies how mathematical models of dynamical systems can be inferred from measured input-output data. This ontology supports parametric and nonparametric identification, time-domain and frequency-domain methods, ARX, ARMAX, OE, Box-Jenkins, state-space identification, prediction-error methods, least squares, recursive least squares, subspace identification, experiment design, excitation, model order selection, validation, residual analysis, bias-variance trade-offs, noise models and relationships with control theory, signal processing, estimation, statistics and adaptive control.

FLOW_ALGEBRA_RECORD {

METADATA {
 FLOW_NAME = "System Identification Ontology"
 FLOW_TYPE = "Mathematical Ontology"
 DOMAIN = "Mathematics"
 SUBDOMAIN = "Applied Mathematics"
 SPECIALISATION = "Control Theory / System Identification"
 CANONICAL_PAGE = "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/applied-mathematics-ontologies/control-theory/system-identification-ontology.html"
 LANGUAGE = "en-GB"
 VERSION = "1.0"
 STATUS = "active"
}

IDENTITY {
 PRIMARY_ENTITY = SystemIdentification
 SYMBOLIC_FORMS = [
  "y(t)=G(q,theta)u(t)+H(q,theta)e(t)",
  "theta_hat=argmin_theta sum_t epsilon(t,theta)^2",
  "x_{k+1}=A x_k+B u_k+K e_k"
 ]
 ENTITY_CLASS = DataDrivenDynamicModelInferenceFramework
 PRIMARY_CONTEXT = ControlTheory
 DEFINITION = "System identification is the construction and estimation of mathematical dynamical-system models from measured input-output data."
 SEMANTIC_ROLE = "Provides the machine-readable framework for model structures, parameter estimation, excitation, prediction error, residuals, model order, noise modelling, validation and data-driven control-system modelling."
}

SCOPE {
 INCLUDE = [
  SystemIdentification,
  IdentificationExperiment,
  InputData,
  OutputData,
  MeasurementNoise,
  ProcessNoise,
  ModelStructure,
  ParametricModel,
  NonparametricModel,
  LinearIdentification,
  NonlinearIdentification,
  ContinuousTimeIdentification,
  DiscreteTimeIdentification,
  TimeDomainIdentification,
  FrequencyDomainIdentification,
  ImpulseResponseModel,
  StepResponseModel,
  FrequencyResponseModel,
  TransferFunctionModel,
  StateSpaceModel,
  ARXModel,
  ARMAXModel,
  OEModel,
  BoxJenkinsModel,
  FIRModel,
  PredictionErrorMethod,
  LeastSquares,
  WeightedLeastSquares,
  RecursiveLeastSquares,
  InstrumentalVariables,
  MaximumLikelihoodEstimation,
  SubspaceIdentification,
  N4SID,
  MOESP,
  CVA,
  ParameterVector,
  ParameterEstimate,
  PredictionError,
  Residual,
  ModelOrder,
  ModelSelection,
  Regularisation,
  CrossValidation,
  InformationCriterion,
  AIC,
  BIC,
  ExcitationSignal,
  PersistentExcitation,
  ExperimentDesign,
  SamplingTime,
  Preprocessing,
  Detrending,
  Filtering,
  Normalisation,
  ValidationData,
  FitMetric,
  ResidualWhiteness,
  ResidualInputIndependence,
  Bias,
  Variance,
  Identifiability
 ]

 EXCLUDE_AS_PRIMARY = [
  StateEstimationWithoutModelLearning,
  PureRegressionWithoutDynamicSystemSemantics,
  SignalFilteringWithoutModelInference,
  AdaptiveControlWithoutExplicitIdentificationContext
 ]

 DISAMBIGUATION_RULE =
  "When the task is to infer a dynamical model from measured input-output data, interpret the context as system identification."
}

CORE_CONCEPTS {

 SystemIdentification {
  definition = "The estimation of dynamical-system models from observed data."
 }

 IdentificationExperiment {
  definition = "A controlled or observed data-collection process intended to reveal system dynamics."
 }

 ModelStructure {
  definition = "The mathematical form and order used to represent the unknown system."
 }

 ParameterVector {
  definition = "The collection of unknown model coefficients to be estimated."
 }

 PredictionError {
  definition = "The difference between measured output and model-predicted output."
 }

 Residual {
  definition = "The unexplained output component after fitting the model."
 }

 PersistentExcitation {
  definition = "An input richness condition supporting unique or reliable parameter estimation."
 }

 Identifiability {
  definition = "The property that distinct parameter values imply distinguishable input-output behaviour under the experiment."
 }

 ModelOrder {
  definition = "The dimensional complexity or number of dynamic coefficients and states in the model."
 }

 ValidationData {
  definition = "Data not used for fitting and used to assess predictive or simulation performance."
 }

 SubspaceIdentification {
  definition = "State-space identification using linear algebra and projections on structured data matrices."
 }
}

RELATIONS {
 SystemIdentification --is_child_of--> ControlTheory
 SystemIdentification --uses--> InputData
 SystemIdentification --uses--> OutputData
 SystemIdentification --selects--> ModelStructure
 ModelStructure --contains--> ParameterVector
 PredictionErrorMethod --minimises--> PredictionError
 LeastSquares --estimates--> ParameterVector
 RecursiveLeastSquares --updates--> ParameterEstimate
 InstrumentalVariables --reduces--> BiasFromCorrelatedNoise
 MaximumLikelihoodEstimation --uses--> ProbabilityModel
 SubspaceIdentification --estimates--> StateSpaceModel
 PersistentExcitation --supports--> Identifiability
 ExperimentDesign --controls--> ExcitationSignal
 ValidationData --tests--> IdentifiedModel
 ResidualWhiteness --supports--> ModelAdequacy
 ResidualInputIndependence --supports--> ModelAdequacy
 InformationCriterion --supports--> ModelSelection
}

OPERATORS {
 ARX_MODEL(Aq,Bq,u,e) :=
  A(q)*y(t)=B(q)*u(t)+e(t)

 ARMAX_MODEL(Aq,Bq,Cq,u,e) :=
  A(q)*y(t)=B(q)*u(t)+C(q)*e(t)

 OE_MODEL(Bq,Fq,u,e) :=
  y(t)=B(q)/F(q)*u(t)+e(t)

 BJ_MODEL(Bq,Fq,Cq,Dq,u,e) :=
  y(t)=B(q)/F(q)*u(t)+C(q)/D(q)*e(t)

 ONE_STEP_PREDICTION(theta,data) :=
  y_hat(t|t-1,theta)

 PREDICTION_ERROR(y,y_hat) :=
  epsilon=y-y_hat

 LEAST_SQUARES(Phi,Y) :=
  theta_hat=(Phi^T*Phi)^(-1)*Phi^T*Y
  when inverse exists

 REGULARISED_LEAST_SQUARES(Phi,Y,lambda) :=
  theta_hat=(Phi^T*Phi+lambda*I)^(-1)*Phi^T*Y

 RLS_GAIN(P,phi,lambda) :=
  K=P*phi/(lambda+phi^T*P*phi)

 RLS_UPDATE(theta_hat,K,error) :=
  theta_hat_new=theta_hat+K*error

 RLS_COVARIANCE(P,K,phi,lambda) :=
  P_new=(P-K*phi^T*P)/lambda

 FIT_PERCENT(y,y_hat) :=
  100*(1-||y-y_hat||/||y-mean(y)||)

 AIC(loglikelihood,k) :=
  2*k-2*loglikelihood

 BIC(loglikelihood,k,n) :=
  k*ln(n)-2*loglikelihood
}

DEFINITIONS {
 D1 = "System identification estimates dynamic models from data."
 D2 = "Model structure and model order must be chosen before or during estimation."
 D3 = "Prediction-error methods fit models by minimising output prediction errors."
 D4 = "Least-squares estimators can be biased when regressors correlate with noise."
 D5 = "Instrumental-variable methods can reduce certain bias mechanisms."
 D6 = "Persistent excitation is required for many identifiability and convergence results."
 D7 = "Subspace methods identify state-space models using matrix decompositions."
 D8 = "Residual analysis is central to model validation."
 D9 = "A high fit percentage alone does not prove model adequacy."
 D10 = "Identification quality depends on experiment design, noise, sampling and model complexity."
}

AXIOMS {
 A1_DATA_DRIVEN:
  SystemIdentification requires measured or simulated data

 A2_DYNAMIC_STRUCTURE:
  Identified models represent temporal or dynamical relationships

 A3_MODEL_CLASS:
  Estimation occurs within a declared model family or structural class

 A4_EXCITATION:
  Sufficient information content in the input or operating trajectory is required for reliable identification

 A5_ESTIMATION:
  Parameters are inferred by minimising or maximising a declared criterion

 A6_VALIDATION:
  Identification is incomplete without independent or residual-based validation

 A7_NOISE_AWARENESS:
  Noise structure materially affects estimator bias and variance

 A8_COMPLEXITY:
  Model complexity must be balanced against overfitting and underfitting
}

REASONING {

 R1_IDENTIFICATION_CONTEXT_EXTRACTION {
  INPUT = modelling_problem
  IDENTIFY = input_signals
  IDENTIFY = output_signals
  IDENTIFY = sampling_time
  IDENTIFY = noise_and_disturbance sources
  IDENTIFY = candidate_model families
  RETURN = identification_context
 }

 R2_PREPROCESSING_REASONING {
  INPUT = raw_data
  CHECK = missing_values
  DETREND = if required
  FILTER = if justified
  NORMALISE = if required
  SPLIT = estimation_and_validation sets
  RETURN = prepared_data
 }

 R3_MODEL_STRUCTURE_SELECTION {
  INPUT = objective_and_prior knowledge
  SELECT = ARX_ARMAX_OE_BJ_FIR_transferFunction_stateSpace_or_nonlinear model
  RETURN = candidate_structure
 }

 R4_PARAMETER_ESTIMATION {
  INPUT = candidate_structure_and_estimation_data
  SELECT = leastSquares_predictionError_MLE_RLS_IV_or_subspace method
  COMPUTE = parameter_or_state_space estimate
  RETURN = identified_model
 }

 R5_MODEL_ORDER_SELECTION {
  INPUT = candidate_orders
  EVALUATE = fit_residuals_AIC_BIC_crossValidation
  RETURN = selected_order
 }

 R6_IDENTIFIABILITY_AND_EXCITATION {
  INPUT = input_signal_and_model structure
  TEST = persistent_excitation_or_rank conditions
  RETURN = identifiability_profile
 }

 R7_RESIDUAL_ANALYSIS {
  INPUT = identified_model_and_data
  COMPUTE = residuals
  TEST = whiteness
  TEST = residual_input cross-correlation
  RETURN = residual_validation profile
 }

 R8_VALIDATION_REASONING {
  INPUT = validation_data
  SIMULATE_OR_PREDICT = model
  COMPUTE = fit_error_and_dynamic_response
  RETURN = validation_profile
 }

 R9_ROBUSTNESS_AND_COMPLEXITY {
  INPUT = competing_models
  COMPARE = bias_variance_sensitivity_and_generalisation
  RETURN = model_tradeoff profile
 }

 R10_MODEL_ACCEPTANCE {
  INPUT = identified_model_validation_results
  CHECK = fit_residuals_identifiability_stability_and_intended_use
  RETURN = accepted_rejected_or_revise status
 }
}

CONSTRAINTS {
 C1 = "Sampling must be adequate for the system bandwidth."
 C2 = "Input and output timestamps must be aligned."
 C3 = "Preprocessing must not remove dynamics of interest."
 C4 = "Model-order selection should not rely on fit alone."
 C5 = "Least-squares unbiasedness assumptions must be checked."
 C6 = "Persistent excitation should not be assumed without evidence."
 C7 = "Validation data should be distinct from fitting data where possible."
 C8 = "Residual whiteness does not alone prove physical correctness."
 C9 = "Nonlinear models can become weakly identifiable or overparameterised."
 C10 = "Closed-loop identification requires special care because input and noise may be correlated."
}

SEMANTIC_EQUIVALENCE {
 "SystemIdentification" <=> "DynamicSystemIdentification"
 "PredictionErrorMethod" <=> "PEM"
 "RecursiveLeastSquares" <=> "RLS"
 "SubspaceIdentification" <=> "StateSpaceSubspaceIdentification"
 "PersistentExcitation" <=> "SufficientDynamicInputRichness"
 "ModelValidation" <=> "IdentifiedModelAdequacyAssessment"
}

VALIDATION {
 V1 = "Input and output data are aligned."
 V2 = "Sampling time is explicit."
 V3 = "Model structure is documented."
 V4 = "Estimator assumptions are documented."
 V5 = "Excitation and identifiability are assessed."
 V6 = "Model order is justified."
 V7 = "Validation uses independent or withheld evidence where possible."
 V8 = "Residual whiteness is tested."
 V9 = "Residual-input independence is tested."
 V10 = "Fit, residual quality and intended-use adequacy are reported separately."
}

CONFIDENCE {
 BASE_CONFIDENCE = 0.99
 SYSTEM_IDENTIFICATION_DEFINITION = 0.99
 PREPROCESSING_REASONING = 0.98
 MODEL_STRUCTURE_REASONING = 0.99
 PARAMETER_ESTIMATION_REASONING = 0.99
 MODEL_ORDER_REASONING = 0.98
 IDENTIFIABILITY_REASONING = 0.98
 RESIDUAL_ANALYSIS_REASONING = 0.99
 VALIDATION_REASONING = 0.99
 MODEL_ACCEPTANCE_REASONING = 0.98

 POLICY =
  "Reduce confidence when sampling, excitation, noise structure, model class, model order, estimator assumptions, validation data or residual evidence are underspecified."
}

AI_CONSUMPTION {
 PURPOSES = [
  SemanticSearch,
  OntologyGrounding,
  SystemIdentificationReasoning,
  ModelStructureReasoning,
  ParameterEstimationReasoning,
  ARXReasoning,
  ARMAXReasoning,
  OutputErrorReasoning,
  BoxJenkinsReasoning,
  PredictionErrorReasoning,
  LeastSquaresReasoning,
  RecursiveLeastSquaresReasoning,
  InstrumentalVariableReasoning,
  SubspaceIdentificationReasoning,
  PersistentExcitationReasoning,
  ModelOrderSelection,
  ResidualAnalysis,
  ValidationReasoning,
  KnowledgeGraphConstruction,
  RetrievalAugmentation,
  RecursiveInference
 ]

 NORMALISE {
  "system identification" -> SystemIdentification
  "system ID" -> SystemIdentification
  "ARX" -> ARXModel
  "ARMAX" -> ARMAXModel
  "output error model" -> OEModel
  "Box-Jenkins" -> BoxJenkinsModel
  "prediction error method" -> PredictionErrorMethod
  "PEM" -> PredictionErrorMethod
  "recursive least squares" -> RecursiveLeastSquares
  "subspace identification" -> SubspaceIdentification
 }

 INTERPRETATION_ORDER = [
  detect_system_identification_context,
  identify input_output_data_sampling_noise_operating_conditions_and_prior knowledge,
  preprocess_and_split data,
  select model_structure_and_order,
  choose leastSquares_PEM_RLS_IV_MLE_or_subspace estimation method,
  estimate model parameters_or_state-space matrices,
  assess excitation_and_identifiability,
  validate using residuals_and held-out data,
  compare complexity_bias_variance_and intended use,
  return semantic output
 ]
}

EXECUTION_RULES {
 E1:
  IF query_mentions("system identification")
  OR asks_to_build_dynamic_model_from measured data
  THEN activate(SystemIdentificationOntology)

 E2:
  IF linear_regression_with_lagged_inputs_and_outputs
  THEN consider ARX_or_ARMAX structure

 E3:
  IF separate_noise_dynamics required
  THEN consider BoxJenkins_or_ARMAX model

 E4:
  IF state_space model desired_from data
  THEN consider subspace identification

 E5:
  IF online_parameter_updates required
  THEN consider RecursiveLeastSquares

 E6:
  IF parameter convergence claimed
  THEN verify excitation_and_identifiability

 E7:
  IF fit_is_high_but_residuals_correlated
  THEN reject_or_revise model

 E8:
  IF closed_loop_data_used
  THEN account_for input_noise correlation

 E9:
  IF model_used_for_control
  THEN validate stability_bandwidth_and prediction quality_in relevant operating region
}

RECURSION {
 ENTRY = SystemIdentification

 EXPAND(SystemIdentification) -> [
  IdentificationExperiment,
  InputData,
  OutputData,
  MeasurementNoise,
  ProcessNoise,
  ModelStructure,
  ParametricModel,
  NonparametricModel,
  LinearIdentification,
  NonlinearIdentification,
  ContinuousTimeIdentification,
  DiscreteTimeIdentification,
  TimeDomainIdentification,
  FrequencyDomainIdentification,
  ImpulseResponseModel,
  StepResponseModel,
  FrequencyResponseModel,
  TransferFunctionModel,
  StateSpaceModel,
  ARXModel,
  ARMAXModel,
  OEModel,
  BoxJenkinsModel,
  FIRModel,
  PredictionErrorMethod,
  LeastSquares,
  WeightedLeastSquares,
  RecursiveLeastSquares,
  InstrumentalVariables,
  MaximumLikelihoodEstimation,
  SubspaceIdentification,
  N4SID,
  MOESP,
  CVA,
  ParameterVector,
  ParameterEstimate,
  PredictionError,
  Residual,
  ModelOrder,
  ModelSelection,
  Regularisation,
  CrossValidation,
  InformationCriterion,
  AIC,
  BIC,
  ExcitationSignal,
  PersistentExcitation,
  ExperimentDesign,
  SamplingTime,
  Preprocessing,
  Detrending,
  Filtering,
  Normalisation,
  ValidationData,
  FitMetric,
  ResidualWhiteness,
  ResidualInputIndependence,
  Bias,
  Variance,
  Identifiability
 ]

 EXPAND(ModelFamilies) -> [
  ARXModel,
  ARMAXModel,
  OEModel,
  BoxJenkinsModel,
  FIRModel,
  TransferFunctionModel,
  StateSpaceModel
 ]

 EXPAND(EstimationMethods) -> [
  LeastSquares,
  WeightedLeastSquares,
  RecursiveLeastSquares,
  InstrumentalVariables,
  MaximumLikelihoodEstimation,
  PredictionErrorMethod,
  SubspaceIdentification
 ]

 EXPAND(ValidationMethods) -> [
  ValidationData,
  CrossValidation,
  ResidualWhiteness,
  ResidualInputIndependence,
  AIC,
  BIC,
  FitMetric
 ]

 STOP_CONDITION =
  "Stop when the data, model structure, order, estimator, excitation, identifiability, residuals, validation performance and intended-use adequacy are sufficiently resolved."
}

ROUTING {
 PARENT_ONTOLOGY = "Control Theory"

 IMMEDIATE_CONTEXTS = [
  "Control Theory Ontology",
  "Adaptive Control Ontology",
  "State-Space Control Ontology",
  "Signal Processing Ontologies"
 ]

 RELATED_ONTOLOGIES = [
  "Control Theory Ontology",
  "Control Theory",
  "Adaptive Control Ontology",
  "State-Space Control Ontology",
  "Feedback Control Ontology",
  "Parameter Estimation Ontology",
  "Probability & Statistics Ontologies",
  "Signal Processing Ontologies",
  "Time Series Ontologies",
  "Linear Algebra Ontologies",
  "Optimisation Ontologies",
  "Kalman Filter Ontologies",
  "Numerical Analysis Ontologies"
 ]

 ROUTE_RULES = [
  "System Identification -> Control Theory Ontology for control-model semantics",
  "System Identification -> Adaptive Control for online model adaptation",
  "System Identification -> State-Space Control for state-space model use",
  "System Identification -> Parameter Estimation for statistical parameter inference",
  "System Identification -> Probability & Statistics for noise and likelihood models",
  "System Identification -> Signal Processing for filtering, spectra and frequency response",
  "System Identification -> Time Series for ARX and ARMAX-style temporal models",
  "System Identification -> Linear Algebra for subspace methods",
  "System Identification -> Optimisation for prediction-error minimisation",
  "System Identification -> Numerical Analysis for estimation stability and conditioning"
 ]
}

UPDATE_MODEL {
 MODE = "append-compatible semantic versioning"

 MAJOR = "ontology-breaking conceptual change"
 MINOR = "new compatible model families, estimators or reasoning pathways"
 PATCH = "clarification, metadata or formatting correction"

 RULES = [
  "Preserve data-driven dynamical-model semantics.",
  "Preserve model-structure and parameter distinctions.",
  "Preserve excitation and identifiability semantics.",
  "Preserve fitting-versus-validation distinction.",
  "Preserve residual-analysis semantics.",
  "Preserve online-versus-offline estimation distinction.",
  "Preserve closed-loop identification cautions.",
  "Preserve machine-readable system-identification semantics."
 ]
}

OUTPUT {
 CANONICAL_DEFINITION =
  "System identification constructs dynamical-system models from measured input-output data."

 STRUCTURE_SUMMARY =
  "Identification requires a declared model family such as ARX, ARMAX, output-error, Box-Jenkins, transfer-function or state-space form."

 ESTIMATION_SUMMARY =
  "Model parameters can be estimated using least squares, prediction-error, maximum-likelihood, recursive or subspace methods."

 EXCITATION_SUMMARY =
  "Sufficient excitation is required for reliable parameter information and many convergence guarantees."

 RESIDUAL_SUMMARY =
  "Residuals should resemble unexplained noise and remain largely uncorrelated with past inputs when the model is adequate."

 ORDER_SUMMARY =
  "Model order should balance fit against complexity using validation, information criteria and prior knowledge."

 VALIDATION_SUMMARY =
  "A model should be validated on withheld data or independent conditions whenever possible."

 ONLINE_SUMMARY =
  "Recursive least squares supports online parameter estimation for slowly varying or adaptive-control contexts."

 STATUS_SUMMARY =
  "Identification results should distinguish parameter fit, prediction accuracy, residual adequacy, identifiability and suitability for intended control use."
}

FLOW {
 INPUT
 -> detect_system_identification_context
 -> identify input_output_signals_sampling_time_noise_process disturbances_operating range_and_prior model knowledge
 -> preprocess detrend_filter_normalise_and_split estimation_validation data as appropriate
 -> select ARX_ARMAX_OE_BoxJenkins_FIR_transferFunction_stateSpace_or_nonlinear model structure
 -> select model_order_and_estimator
 -> estimate parameters_or_state_space matrices using leastSquares_PEM_RLS_IV_MLE_or_subspace method
 -> assess excitation_and_identifiability
 -> compute predictions_simulations_and_residuals
 -> validate fit_residual whiteness_input independence_crossValidation_AIC_BIC_and intended use
 -> classify accepted_rejected_or_revise model status
 -> route to control_theory_ontology adaptive_control state_space feedback_control parameter_estimation probability_statistics signal_processing time_series linear_algebra optimisation Kalman_filter_or_numerical_analysis ontology
 -> recursively_expand_required_dependencies
 -> verify_result
 -> assign_confidence
 -> produce_semantic_output
 -> END
}

SEMANTIC_SUMMARY {
 "The System Identification Ontology defines data-driven inference of dynamical-system models. It supports parametric and nonparametric identification, continuous and discrete models, time- and frequency-domain methods, ARX, ARMAX, output-error, Box-Jenkins, FIR, transfer-function and state-space structures, least squares, recursive least squares, instrumental variables, maximum likelihood, prediction-error methods, subspace methods such as N4SID and MOESP, model order selection, persistent excitation, experiment design, preprocessing, residual analysis, fit metrics, AIC, BIC, cross-validation, bias, variance and identifiability."
}

FLOW_HASH {
 METHOD = "semantic-content-identity"
 ID = "KIRETH-MATH-APPLIED-MATHEMATICS-SYSTEM-IDENTIFICATION-ONTOLOGY-V1"
}

}

END_FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ