/NonSysID

A MatLab package for System Identification using linear and nonlinear auto-regresive models (N)AR, (N)ARX and (N)ARMAX models

Primary LanguageMATLABBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

NonSysId: Nonlinear System Identification with Improved Model Term Selection for NARMAX Models

An open-source MATLAB package for system identification of ARX, NARX and (N)ARMAX models, featuring improved term selection and robust long-term simulation capabilities.

Authors: Rajintha Gunawardena (https://github.com/raj-gun), Zi-Qiang Lang, Fei He (https://github.com/feihelab)

MATLAB MATLAB License arXiv


Overview 📖

NonSysId is a MATLAB package designed for the identification of nonlinear dynamic systems using (N)AR(MA)X models. It incorporates an enhanced Orthogonal Forward Regression (OFR) algorithm, iterative-OFR (iOFR), and PRESS-statistic based criterion to improve model term selection and ensure robust long-term predictions. The package is particularly suited for applications where separate validation datasets are difficult to obtain, such as real-time fault diagnosis and electrophysiological studies.

Features

  • Iterative OFR (iOFR): Improves term selection by iterating through multiple orthogonalisation paths to produce parsimonious models.
  • Simulation-based Model Selection: Ensures simulation stability and enhances long-term prediction accuracy.
  • PRESS-statistic Integration: Includes a PRESS-statistic based term selection criterion that aims to minimise the leave-one-out cross-validation error. Therefore, the model can be validated without requiring separate validation datasets.
  • Reduced Computational Time (RCT): Optimized procedures to accelerate model term selection for complex NARX models.

Getting Started 🚀

Prerequisites

  • MATLAB R2017a or later.
  • Required MATLAB Toolboxes:
    • Signal Processing Toolbox (required if using earlier than Matlab 2019a, for correlation analysis).
    • Parallel Computing Toolbox (required for accelerating system identification procedures).

Installation

  1. Clone the repository:

    git clone https://github.com/raj-gun/NonSysId.git

    or manually download the folder 'NonSysId'.

  2. In Matlab, either;

Examples

  • Basic use of identifying a SISO NARX model from real data, see the example in Examples/Electro-mecahnical system.
  • An example of identifying a MISO NARX model is shown in Examples/Hystersis_model_MISO.

Paper

If you are using the NonSysId package for academic purposes, kindly reference our pre-print paper as follows:

NonSysId: A nonlinear system identification package with improved model term selection for NARMAX models

Rajintha Gunawardena, Zi-Qiang Lang, Fei He

DOI: 10.48550/arXiv.2411.16475

@misc{10.48550/arXiv.2411.16475,
      title={NonSysId: A nonlinear system identification package with improved model term selection for NARMAX models}, 
      author={Rajintha Gunawardena and Zi-Qiang Lang and Fei He},
      year={2024},
      eprint={2411.16475},
      archivePrefix={arXiv},
      primaryClass={eess.SY},
      url={https://arxiv.org/abs/2411.16475}, 
}

References

[1] M. Korenberg, S. Billings, Y. Liu, and P. McIlroy, “Orthogonal parameter estimation algorithm for non-linear stochastic systems,” Int. J. Control, vol. 48, no. 1, pp. 193–210„ 1988.

[2] S. Chen, S. Billings, and W. Luo, “Orthogonal least squares methods and their application to non-linear system identification,” Int. J. Control, vol. 50, no. 5, pp. 1873–1896„ 1989.

[3] S. Billings, Nonlinear System Identification: NARMAX Methods In The Time, Frequency, And Spatio-Temporal Domains, vol. 13. Chichester, UK: John Wiley & Sons, Ltd, 2013.

[4] S. B. Yuzhu Guo, L.Z. Guo and H.-L. Wei, “An iterative orthogonal forward regression algorithm,” International Journal of Systems Science, vol. 46, no. 5, pp. 776–789, 2015.

[5] X. Hong, P. Sharkey, and K. Warwick, “Automatic nonlinear predictive model-construction algorithm using forward regression and the press statistic,” IEE Proceedings-Control Theory and Applications, vol. 150, no. 3, pp. 245–254, 2003.

[6] L. Ljung, System identification. Springer, 1998.