Learn R Programming

sysid: System Identification in R

sysid provides functions for constructing mathematical models of dynamical systems from measured input-output data. It supports discrete-time model estimation using time-domain and frequency-domain data.

Supported model structures include ARX, ARMAX, Output Error (OE), Box-Jenkins (BJ), and instrumental variable methods.

Installation

Install from CRAN:

install.packages("sysid")

Usage

library(sysid)

# Load example data (simulated ARX process)
data(arxsim)

# Split into training and validation sets
train <- dataSlice(arxsim, end = 1500)
test  <- dataSlice(arxsim, start = 1501)

# Estimate an ARX model: na=1, nb=2, nk=2
model <- arx(train, order = c(1, 2, 2))
print(model)

# Compare model predictions against validation data
compare(test, model)

# Plot residual diagnostics
residplot(model)

Documentation

Full documentation is available on CRAN.

Citation

If you use sysid in your research, please cite:

Yerramilli, S., Moudgalya, K. M., & Tangirala, A. K. (2017, January). SYSID: An open-source library for system identification. In 2017 Indian Control Conference (ICC) (pp. 53-58). IEEE.

BibTeX entry:

@inproceedings{yerramilli2017sysid,
  title={SYSID: An open-source library for system identification},
  author={Yerramilli, Suraj and Moudgalya, Kannan M and Tangirala, Arun K},
  booktitle={2017 Indian Control Conference (ICC)},
  pages={53--58},
  year={2017},
  organization={IEEE}
}

License

GPL-3

Copy Link

Version

Install

install.packages('sysid')

Monthly Downloads

187

Version

1.0.5

License

GPL-3

Maintainer

Suraj Yerramilli

Last Published

January 29th, 2026

Functions in sysid (1.0.5)

read.table.idframe

Read the contents of a table-formatted file
fitch

Fit Characteristics
nInputSeries

Number of series in input or output
rarx

Estimate parameters of ARX recursively
read.idframe

Data input into a idframe object
frd

Frequency response data
misdata

Replace Missing Data by Interpolation
step

Step Response Plots
time

Sampling times of IO data time creates the vector of times at which data was sampled. frequency returns the number of damples per unit time and deltat the time-interval between observations
impulseplot

Impulse Response Plots
plot.idfrd

Plotting idfrd objects
iv

ARX model estimation using instrumental variable method
iv4

ARX model estimation using four-stage instrumental variable method
plot.idframe

Plotting idframe objects
etfe

Estimate empirical transfer function
inputData

Output or Input-data
estpoly

Estimated polynomial object
optimOptions

Create optimization options
inputNames<-

Extract or set series' names
residplot

Plot residual characteristics
predict.estpoly

Predictions of identified model
sim

Simulate response of dynamic system
oe

Estimate Output-Error Models
spa

Estimate frequency response
oesim

Data simulated from an OE model
arxsim

Data simulated from an ARX model
arx

Estimate ARX Models
compare

Compare the measured output and the predicted output(s)
armax

Estimate ARMAX Models
bj

Estimate Box-Jenkins Models
%=%

Multiple assignment operator
getcov

Parameter covariance of the identified model
impulseest

Estimate Impulse Response Coefficients
cstr_mis

Continuous stirred tank reactor data with missing values
cstrData

Continuous stirred tank reactor data (data.frame)
bjsim

Data simulated from an BJ model
cstr

Continuous stirred tank reactor data (idframe)
armaxsim

Data simulated from an ARMAX model
dataSlice

Subset or Resample idframe data
idfrd

S3 class constructor for storing frequency response data
idframe

S3 class for storing input-output data.
idinput

function to generate input singals (rgs/rbs/prbs/sine)
detrend

Remove offsets and linear trends
idpoly

Polynomial model with identifiable parameters