Documentation

arx

Estimate parameters of ARX or AR model using least squares

Syntax

sys = arx(data,[na nb nk])
sys = arx(data,[na nb nk],Name,Value)
sys = arx(data,[na nb nk],___,opt)

Description

    Note:   arx does not support continuous-time estimations. Use tfest instead.

sys = arx(data,[na nb nk]) returns an ARX structure polynomial model, sys, with estimated parameters and covariances (parameter uncertainties) using the least-squares method and specified orders.

sys = arx(data,[na nb nk],Name,Value) estimates a polynomial model with additional options specified by one or more Name,Value pair arguments.

sys = arx(data,[na nb nk],___,opt) specifies estimation options that configure the estimation objective, initial conditions and handle input/output data offsets.

Input Arguments

data

Estimation data.

Specify data as an iddata object, an frd object, or an idfrd frequency-response-data object.

[na nb nk]

Polynomial orders.

[na nb nk] define the polynomial orders of an ARX model.

  • na — Order of the polynomial A(q).

    Specify na as an Ny-by-Ny matrix of nonnegative integers. Ny is the number of outputs.

  • nb — Order of the polynomial B(q) + 1.

    nb is an Ny-by-Nu matrix of nonnegative integers. Ny is the number of outputs and Nu is the number of inputs.

  • nk — Input-output delay expressed as fixed leading zeros of the B polynomial.

    Specify nk as an Ny-by-Nu matrix of nonnegative integers. Ny is the number of outputs and Nu is the number of inputs.

opt

Estimation options.

opt is an options set that specifies estimation options, including:

  • input/output data offsets

  • output weight

Use arxOptions to create the options set.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

'InputDelay'

Input delays. InputDelay is a numeric vector specifying a time delay for each input channel. Specify input delays in integer multiples of the sample time Ts. For example, InputDelay = 3 means a delay of three sampling periods.

For a system with Nu inputs, set InputDelay to an Nu-by-1 vector, where each entry is a numerical value representing the input delay for the corresponding input channel. You can also set InputDelay to a scalar value to apply the same delay to all channels.

Default: 0 for all input channels

'ioDelay'

Transport delays. ioDelay is a numeric array specifying a separate transport delay for each input/output pair.

Specify transport delays as integers denoting delay of a multiple of the sample time Ts.

For a MIMO system with Ny outputs and Nu inputs, set ioDelay to a Ny-by-Nu array, where each entry is a numerical value representing the transport delay for the corresponding input/output pair. You can also set ioDelay to a scalar value to apply the same delay to all input/output pairs. Useful as a replacement for the nk order, you can factor out max(nk-1,0) lags as the ioDelay value.

Default: 0 for all input/output pairs

'IntegrateNoise'

Specify integrators in the noise channels.

Adding an integrator creates an ARIX model represented by:

A(q)y(t)=B(q)u(tnk)+11q1e(t)

where,11q1 is the integrator in the noise channel, e(t).

IntegrateNoise is a logical vector of length Ny, where Ny is the number of outputs.

Default: false(Ny,1), where Ny is the number of outputs

Output Arguments

sys

ARX model that fits the estimation data, returned as a discrete-time idpoly object. This model is created using the specified model orders, delays, and estimation options.

Information about the estimation results and options used is stored in the Report property of the model. Report has the following fields:

Report FieldDescription
Status

Summary of the model status, which indicates whether the model was created by construction or obtained by estimation.

Method

Estimation command used.

InitialCondition

Handling of initial conditions during model estimation, returned as a string with one of the following values:

  • 'zero' — The initial conditions were set to zero.

  • 'estimate' — The initial conditions were treated as independent estimation parameters.

  • 'backcast' — The initial conditions were estimated using the best least squares fit.

This field is especially useful to view how the initial conditions were handled when the InitialCondition option in the estimation option set is 'auto'.

Fit

Quantitative assessment of the estimation, returned as a structure. See Loss Function and Model Quality Metrics for more information on these quality metrics. The structure has the following fields:

FieldDescription
FitPercent

Normalized root mean squared error (NRMSE) measure of how well the response of the model fits the estimation data, expressed as a percentage.

LossFcn

Value of the loss function when the estimation completes.

MSE

Mean squared error (MSE) measure of how well the response of the model fits the estimation data.

FPE

Final prediction error for the model.

AIC

Raw Akaike Information Criteria (AIC) measure of model quality.

AICc

Small sample-size corrected AIC.

nAIC

Normalized AIC.

BIC

Bayesian Information Criteria (BIC).

Parameters

Estimated values of model parameters.

OptionsUsed

Option set used for estimation. If no custom options were configured, this is a set of default options. See arxOptions for more information.

RandState

State of the random number stream at the start of estimation. Empty, [], if randomization was not used during estimation. For more information, see rng in the MATLAB® documentation.

DataUsed

Attributes of the data used for estimation, returned as a structure with the following fields:

FieldDescription
Name

Name of the data set.

Type

Data type.

Length

Number of data samples.

Ts

Sample time.

InterSample

Input intersample behavior, returned as one of the following values:

  • 'zoh' — Zero-order hold maintains a piecewise-constant input signal between samples.

  • 'foh' — First-order hold maintains a piecewise-linear input signal between samples.

  • 'bl' — Band-limited behavior specifies that the continuous-time input signal has zero power above the Nyquist frequency.

InputOffset

Offset removed from time-domain input data during estimation. For nonlinear models, it is [].

OutputOffset

Offset removed from time-domain output data during estimation. For nonlinear models, it is [].

For more information on using Report, see Estimation Report.

Examples

collapse all

Estimate ARX model

Generate input data based on a specified ARX model, and then use this data to estimate an ARX model.

A = [1  -1.5  0.7];
B = [0 1 0.5];
m0 = idpoly(A,B);
u = iddata([],idinput(300,'rbs'));
e = iddata([],randn(300,1));
y = sim(m0,[u e]);
z = [y,u];
m = arx(z,[2 2 1]);

Estimate ARX Model Using Regularization

Use arxRegul to automatically determine regularization constants and use the values for estimating an FIR model of order 50.

Obtain L and R values.

load regularizationExampleData eData;
orders = [0 50 0];
[L,R] = arxRegul(eData,orders);

By default, the TC kernel is used.

Use the returned Lambda and R values for regularized ARX model estimation.

opt = arxOptions;
opt.Regularization.Lambda = L;
opt.Regularization.R = R;
model = arx(eData,orders,opt);

More About

expand all

ARX structure

The ARX model structure is :

y(t)+a1y(t1)+...+anay(tna)=b1u(tnk)+...+bnbu(tnbnk+1)+e(t)

The parameters na and nb are the orders of the ARX model, and nk is the delay.

  • y(t)— Output at time t.

  • na — Number of poles.

  • nb — Number of zeroes plus 1.

  • nk — Number of input samples that occur before the input affects the output, also called the dead time in the system.

  • y(t1)y(tna) — Previous outputs on which the current output depends.

  • u(tnk)u(tnknb+1) — Previous and delayed inputs on which the current output depends.

  • e(t) — White-noise disturbance value.

A more compact way to write the difference equation is

A(q)y(t)=B(q)u(tnk)+e(t)

q is the delay operator. Specifically,

A(q)=1+a1q1++anaqna

B(q)=b1+b2q1++bnbqnb+1

Time Series Models

For time-series data that contains no inputs, one output and orders = na, the model has AR structure of order na.

The AR model structure is

A(q)y(t)=e(t)

Multiple Inputs and Single-Output Models

For multiple-input systems, nb and nk are row vectors where the ith element corresponds to the order and delay associated with the ith input.

y(t)+A1y(t1)+A2y(t2)++Anay(tna)=          B0u(t)+B1u(t1)++Bnbu(tnb)+e(t)

Multi-Output Models

For models with multiple inputs and multiple outputs, na, nb, and nk contain one row for each output signal.

In the multiple-output case, arx minimizes the trace of the prediction error covariance matrix, or the norm

t=1NeT(t)e(t)

To transform this to an arbitrary quadratic norm using a weighting matrix Lambda

t=1NeT(t)Λ1e(t)

use the syntax

opt = arxOptions('OutputWeight', inv(lambda))
m = arx(data, orders, opt)

Estimating Initial Conditions

For time-domain data, the signals are shifted such that unmeasured signals are never required in the predictors. Therefore, there is no need to estimate initial conditions.

For frequency-domain data, it might be necessary to adjust the data by initial conditions that support circular convolution.

Set the InitialCondition estimation option (see arxOptions) to one the following values:

  • 'zero' — No adjustment.

  • 'estimate' — Perform adjustment to the data by initial conditions that support circular convolution.

  • 'auto' — Automatically choose between 'zero' and 'estimate' based on the data.

Algorithms

QR factorization solves the overdetermined set of linear equations that constitutes the least-squares estimation problem.

The regression matrix is formed so that only measured quantities are used (no fill-out with zeros). When the regression matrix is larger than MaxSize, data is segmented and QR factorization is performed iteratively on these data segments.

Without regularization, the ARX model parameters vector θ is estimated by solving the normal equation:

(JTJ)θ=JTy

where J is the regressor matrix and y is the measured output. Therefore,

θ=(JTJ)1JTy.

Using regularization adds a regularization term:

θ=(JTJ+λR)1JTy

where, λ and R are the regularization constants. See arxOptions for more information on the regularization constants.

Introduced before R2006a

Was this topic helpful?