Main Content

arxRegul

Determine regularization constants for ARX model estimation

Description

Calculate Regularization Constants

[lambda,R] = arxRegul(tt,orders) returns the regularization constants used for ARX model estimation, using the data contained in the variables of timetable tt. Use the regularization constants in arxOptions to configure the regularization options for ARX model estimation.

The software uses the first Nu variables as inputs and the next Ny variables as outputs, where Nu and Ny are determined from the dimensions of nb and na in the orders argument, respectively.

To select specific input and output channels from tt, use name-value syntax to set 'InputName' and 'OutputName' to the corresponding timetable variable names.

[lambda,R] = arxRegul(u,y,orders) uses the time-domain input and output signals in the comma-separated matrices u,y. The software assumes that the data sample time is 1 second.

[lambda,R] = arxRegul(data,orders) uses the time-domain or frequency-domain data in the data object data. Use this syntax especially when you want to estimate a model using frequency-domain or frequency-response data, or when you want to take advantage of the additional information, such as data sample time or experiment labeling, that data objects provide.

example

Specify Additional Options

[lambda,R] = arxRegul(___,Name,Value) specifies model structure attributes, such as noise integrator and input delay, using one or more name-value arguments. You can use this syntax with any of the previous input-argument combinations.

example

[lambda,R] = arxRegul(___,options) specifies regularization options such as regularization kernel and I/O offsets.

example

Examples

collapse all

load sdata1 tt1;
orders = [10 10 1];
[Lambda,R] = arxRegul(tt1,orders);

The ARX model is estimated using the default regularization kernel TC.

Use the Lambda and R values for ARX model estimation.

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

Compare the model output to the measured data.

compare(tt1,model)

Figure contains an axes object. The axes object with ylabel y contains 2 objects of type line. These objects represent Validation data (y), model: 71.24%.

Specify 'DC' as the regularization kernel and obtain a regularized ARX model of order [|10 10 1|].

load sdata1 umat1 ymat1
orders = [10 10 1];
option = arxRegulOptions('RegularizationKernel','DC');
[Lambda,R] = arxRegul(umat1,ymat1,orders,option);

Use the Lambda and R values for ARX model estimation.

arxOpt = arxOptions;
arxOpt.Regularization.Lambda = Lambda;
arxOpt.Regularization.R = R;
model = arx(umat1,ymat1,orders,arxOpt);

Compare the model output with the measured data.

compare(umat1,ymat1,model)

Figure contains an axes object. The axes object with ylabel y1 contains 2 objects of type line. These objects represent Validation data (y1), model: 71.23%.

Specify to include a noise source integrator in the noise component of the model.

load iddata1 z1;
orders = [10 10 1];
[Lambda,R] = arxRegul(z1,orders,'IntegrateNoise',true);

Specify the regularization kernel and include a noise source integrator in the noise component of the model.

load sdata1 tt1;
orders = [10 10 1];
opt = arxRegulOptions('RegularizationKernel','DC');
[Lambda,R] = arxRegul(tt1,orders,opt,'IntegrateNoise',true);

Input Arguments

collapse all

Estimation data, specified as a timetable that uses a regularly spaced time vector. tt contains variables representing input and output channels. For multiexperiment data, tt is a cell array of timetables of length Ne, where Ne is the number of experiments.

The software determines the number of input and output channels to use for estimation from the dimensions of the specified polynomial orders. The input/output channel selection depends on whether the 'InputName' and 'OutputName' name-value arguments are specified.

  • If 'InputName' and 'OutputName' are not specified, then the software uses the first Nu variables of tt as inputs and the next Ny variables of tt as outputs.

  • If 'InputName' and 'OutputName' are specified, then the software uses the specified variables. The number of specified input and output names must be consistent with Nu and Ny.

  • For functions that can estimate a time series model, where there are no inputs, 'InputName' does not need to be specified.

For more information about working with estimation data types, see Data Domains and Data Types in System Identification Toolbox.

Estimation data, specified for SISO systems as a comma-separated pair of Ns-by-1 real-valued matrices that contain uniformly sampled input and output time-domain signal values. Here, Ns is the number of samples.

For MIMO systems, specify u,y as an input/output matrix pair with the following dimensions:

  • uNs-by-Nu, where Nu is the number of inputs.

  • yNs-by-Ny, where Ny is the number of outputs.

For multiexperiment data, specify u,y as a pair of 1-by-Ne cell arrays, where Ne is the number of experiments. The sample times of all the experiments must match.

For time series data, which contains only outputs and no inputs, specify [],y.

Limitations

  • Matrix-based data does not support estimation from frequency-domain data. You must use a data object such as an iddata object or idfrd object (see data).

For more information about working with estimation data types, see Data Domains and Data Types in System Identification Toolbox.

Estimation data, specified as an iddata object.

ARX model orders [na nb nc], specified as a matrix of nonnegative integers. See the arx reference page for more information on model orders.

Regularization options, specified as an options set you create using arxRegulOptions.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: [Lambda, R] = arxRegul(z1,orders,option,'InputDelay',10);

Input channel names, specified as a string, character vector, string array, or cell array of character vectors.

If you are using a timetable for the data source, the names in InputName must be a subset of the timetable variables.

Example: sys = arxRegul(tt,__,'InputName',["u1" "u2"]) selects the variables u1 and u2 as the input channels from the timetable tt to use for the estimation.

Output channel names, specified as a string, character vector, string array, or cell array of character vectors.

If you are using a timetable for the data source, the names in OutputName must be a subset of the timetable variables.

Example: sys = arxRegul(tt,__,'OutputName',["y1" "y3"]) selects the variables y1 and y3 as the output channels from the timetable tt to use for the estimation.

Input delay, specified as a positive, nonzero numeric value representing the number of samples.

Example: [Lambda, R] = arxRegul(z1,orders,'InputDelay',10);

Data Types: double

Noise source integrator, specified as a logical. Specifies whether the noise source e(t) should contain an integrator. The default is false, indicating the noise integrator is off. To turn it on, change the value to true.

Example: [Lambda, R] = arxRegul(z1,orders,'IntegrateNoise',true);

Data Types: logical

Output Arguments

collapse all

Constant that determines the bias versus variance trade-off, returned as a positive scalar.

Weighting matrix, returned as a vector of nonnegative numbers or a positive definite matrix.

Algorithms

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 the regularization term

θ=(JTJ+λR)1JTy

where λ and R are the regularization constants. For more information on the regularization constants, see arxOptions.

References

[1] T. Chen, H. Ohlsson, and L. Ljung. “On the Estimation of Transfer Functions, Regularizations and Gaussian Processes - Revisited”, Automatica, Volume 48, August 2012.

Version History

Introduced in R2013b