wilsonrljr/sysidentpy

A Python Package For System Identification Using NARMAX Models

What it solves

SysIdentPy is designed for system identification and time series forecasting. It provides a framework to build dynamical nonlinear models, specifically NARMAX models and their variants (such as NARX, NAR, NARMA, NFIR, ARMAX, ARX, and ARMA), allowing users to model complex dynamic systems from data.

How it works

The library implements a variety of techniques for model structure selection and parameter estimation. It uses basis functions (including polynomial, Fourier, and bilinear) to define the model's nonlinearities. It supports multiple structure selection algorithms like FROLS, MetaMSS, and AOLS, and over 15 parameter estimation methods. Additionally, it integrates with PyTorch for neural NARX models and can wrap general estimators from libraries like scikit-learn and CatBoost.

Who it’s for

It is intended for researchers and engineers working with dynamic systems, time series forecasting, and nonlinear system identification, serving as an open-source alternative to tools like Matlab's System Identification Toolbox.

Highlights

  • Versatile Model Types: Supports a wide range of NARMAX variants including NARX, NAR, and ARMAX.
  • Model Structure Selection: Includes state-of-the-art algorithms like FROLS and Orthogonal Floating Search.
  • Neural Integration: Ability to create custom neural NARX architectures using PyTorch.
  • Flexible Basis Functions: Offers 8 different basis functions to customize nonlinear models.
  • Broad Estimator Support: Compatible with scikit-learn and CatBoost estimators.

Related

  • Project
  • Project
  • Project
  • Project
  • Project