Estimate recursively parameters of ARMAX or ARMA models

thm = rarmax(z,nn,adm,adg) [thm,yhat,P,phi,psi] = rarmax(z,nn,adm,adg,th0,P0,phi0,psi0)

The parameters of the ARMAX model structure

$$A(q)y(t)=B(q)u(t-nk)+C(q)e(t)$$

are estimated using a recursive prediction error method.

The input-output data is contained in `z`

,
which is either an `iddata`

object or a matrix ```
z
= [y u]
```

where `y`

and `u`

are
column vectors. `nn`

is given as

nn = [na nb nc nk]

where `na`

, `nb`

, and `nc`

are
the orders of the ARMAX model, and `nk`

is the delay.
Specifically,

$$\begin{array}{c}na\text{:}A(q)=1+{a}_{1}{q}^{-1}+\mathrm{...}+{a}_{na}{q}^{-na}\\ nb\text{:}B(q)={b}_{1}+{b}_{2}{q}^{-1}+\mathrm{...}+{b}_{nb}{q}^{-nb+1}\\ nc\text{:C}(q)=1+{c}_{1}{q}^{-1}+\mathrm{...}+{c}_{nc}{q}^{-nc}\end{array}$$

See What Are Polynomial Models? for more information.

If `z`

represents a time series `y`

and ```
nn
= [na nc]
```

, `rarmax`

estimates the parameters
of an ARMA model for `y`

.

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

Only single-input, single-output models are handled by `rarmax`

.
Use `rpem`

for the multiple-input case.

The estimated parameters are returned in the matrix `thm`

.
The `k`

th row of `thm`

contains
the parameters associated with time `k`

; that is,
they are based on the data in the rows up to and including row `k`

in `z`

.
Each row of `thm`

contains the estimated parameters
in the following order:

thm(k,:) = [a1,a2,...,ana,b1,...,bnb,c1,...,cnc]

`yhat`

is the predicted value of the output,
according to the current model; that is, row *k* of `yhat`

contains
the predicted value of `y(k)`

based on all past data.

The actual algorithm is selected with the two arguments `adm`

and `adg`

.
These are described under `rarx`

.

The input argument `th0`

contains the initial
value of the parameters, a row vector consistent with the rows of `thm`

.
The default value of `th0`

is all zeros.

The arguments `P0`

and `P`

are
the initial and final values, respectively, of the scaled covariance
matrix of the parameters. See `rarx`

.
The default value of `P0`

is 10^{4} times
the unit matrix. The arguments `phi0`

, `psi0`

, `phi`

,
and `psi`

contain initial and final values of the
data vector and the gradient vector, respectively. The sizes of these
depend on the chosen model orders. The normal choice of `phi0`

and `psi0`

is
to use the outputs from a previous call to `rarmax`

with
the same model orders. (This call could be a dummy call with default
input arguments.) The default values of `phi0`

and `psi0`

are
all zeros.

Note that the function requires that the delay `nk`

be
larger than `0`

. If you want `nk = 0`

,
shift the input sequence appropriately and use `nk = 1`

.

Compute and plot, as functions of time, the four parameters
in a second-order ARMA model of a time series given in the vector `y`

.
The forgetting factor algorithm with a forgetting factor of 0.98 is
applied.

thm = rarmax(y,[2 2],'ff',0.98); plot(thm)

Was this topic helpful?