ARMA

(Source code, png)

../../_images/openturns-ARMA-1.png
class ARMA(*args)

ARMA process.

Refer to ARMA stochastic process.

Available constructors:

ARMA()

ARMA(ARCoeff, MACoeff, whiteNoise)

ARMA(ARCoeff, MACoeff, whiteNoise, ARMAstate)

Parameters:
ARCoeffARMACoefficients

The coefficients of the AR part of the recurrence : (a_1, \hdots, a_p) in dimension 1 and (\mat{A}_{\, 1}, \hdots, \mat{A}{\, _p}) in dimension d.

Default is: 0 in dimension 1 and the associated time grid is \{0,1\}.

MACoeffARMACoefficients

The coefficients of the MA part of the recurrence : (b_1, \hdots, b_q) in dimension 1 and (\mat{B}_{\, 1}, \hdots, \mat{B}{\, _p}) in dimension d.

Default is: 0 in dimension 1 and the associated time grid is \{0,1\}.

whiteNoiseWhiteNoise

The white noise distribution of the recurrent relation.

Default is: the Normal distribution with zero mean and unit variance in dimension 1.

ARMAstateARMAState

The state of the ARMA process which will be extended to the next time stamps. The state is composed with p values of the process and q values of the white noise. This constructor is needed to get possible futurs from the current state.

Notes

An ARMA process in dimension d is defined by the linear recurrence :

\vect{X}_t + \mat{A}_{\, 1}   \,  \vect{X}_{t-1} + \hdots +  \mat{A}_{\, p} \,   \vect{X}_{t-p} = \vect{\varepsilon}_{t}+  \mat{B}_ {\, 1} \,   \vect{\varepsilon}_{t-1}+   \hdots + \mat{B}_{\, q}  \,  \vect{\varepsilon}_{t-q}

where \mat{A}_{\, i} \in  \Rset^d \times \Rset^d and \mat{B}_{\, j} \in  \Rset^d \times \Rset^d.

In dimension 1, an ARMA process is defined by:

X_t +a_1  X_{t-1} + \hdots +  a_p X_{t-p} = \varepsilon_{t}+  b_1 \varepsilon_{t-1}+   \hdots +b_q \varepsilon_{t-q}

where (a_i,b_i) \in \Rset.

Examples

Create an ARMA(4,2) process:

>>> import openturns as ot
>>> myTimeGrid = ot.RegularGrid(0.0, 0.1, 10)
>>> myWhiteNoise = ot.WhiteNoise(ot.Triangular(-1.0, 0.0, 1.0), myTimeGrid)
>>> myARCoef = ot.ARMACoefficients([0.4, 0.3, 0.2, 0.1])
>>> myMACoef = ot.ARMACoefficients([0.4, 0.3])
>>> myARMAProcess = ot.ARMA(myARCoef, myMACoef, myWhiteNoise)
>>> myLastValues = ot.Sample([[0.6], [0.7], [0.3], [0.2]])
>>> myLastNoiseValues = ot.Sample([[1.2], [1.8]])
>>> myARMAState = ot.ARMAState(myLastValues, myLastNoiseValues)
>>> myARMAProcessWithState = ot.ARMA(myARCoef, myMACoef, myWhiteNoise, myARMAState)

Generate a realization:

>>> myTimeSeries = myARMAProcess.getContinuousRealization()

Methods

computeNThermalization(epsilon)

Accessor to the stored state of the ARMA process.

getARCoefficients()

Accessor to the AR coefficients of the ARMA process.

getClassName()

Accessor to the object's name.

getContinuousRealization()

Get a continuous realization.

getCovarianceModel()

Accessor to the covariance model.

getDescription()

Get the description of the process.

getFuture(*args)

Get possible futures from the current state of the ARMA process.

getId()

Accessor to the object's id.

getInputDimension()

Get the dimension of the domain \cD.

getMACoefficients()

Accessor to the MA coefficients of the ARMA process.

getMarginal(*args)

Get the k^{th} marginal of the random process.

getMesh()

Get the mesh.

getNThermalization()

Accessor to the number of time stamps used to thermalize the process.

getName()

Accessor to the object's name.

getOutputDimension()

Get the dimension of the domain \cD.

getRealization()

Get a realization of the process.

getSample(size)

Get n realizations of the process.

getShadowedId()

Accessor to the object's shadowed id.

getState()

Accessor to the stored state of the ARMA process.

getTimeGrid()

Get the time grid of observation of the process.

getTrend()

Accessor to the trend.

getVisibility()

Accessor to the object's visibility state.

getWhiteNoise()

Accessor to the white noise defining the ARMA process.

hasName()

Test if the object is named.

hasVisibleName()

Test if the object has a distinguishable name.

isComposite()

Test whether the process is composite or not.

isNormal()

Test whether the process is normal or not.

isStationary()

Test whether the process is stationary or not.

setDescription(description)

Set the description of the process.

setMesh(mesh)

Set the mesh.

setNThermalization(n)

Accessor to the number of time stamps used to thermalize the process.

setName(name)

Accessor to the object's name.

setShadowedId(id)

Accessor to the object's shadowed id.

setState(state)

Accessor to the stored state of the ARMA process.

setTimeGrid(timeGrid)

Set the time grid of observation of the process.

setVisibility(visible)

Accessor to the object's visibility state.

setWhiteNoise(whiteNoise)

Accessor to the white noise defining the ARMA process.

__init__(*args)
computeNThermalization(epsilon)

Accessor to the stored state of the ARMA process.

Parameters:
epsfloat, \epsilon > 0
Returns:
Ntherint, N_{ther} \geq 1

The number of iterations of the ARMA process before being stationary and independent of its initial state.

Notes

The thermalization number N_{ther} is defined as follows:

N_{ther} > E\left[ \displaystyle \frac{\ln \epsilon}{\ln \max_{i,j} |r_{ij}|}\right]

where E[] is the integer part of a float and the (r_i)_i are the roots of the polynomials (given here in dimension 1) :

\Phi(\vect{r}) = \vect{r}^p + \sum_{i=1}^p a_i\vect{r}^{p-i}

getARCoefficients()

Accessor to the AR coefficients of the ARMA process.

Returns:
ARCoeffARMACoefficients

The AR coefficients of the linear recurrence defining the process.

getClassName()

Accessor to the object’s name.

Returns:
class_namestr

The object class name (object.__class__.__name__).

getContinuousRealization()

Get a continuous realization.

Returns:
realizationFunction

According to the process, the continuous realizations are built:

  • either using a dedicated functional model if it exists: e.g. a functional basis process.

  • or using an interpolation from a discrete realization of the process on \cM: in dimension d=1, a linear interpolation and in dimension d \geq 2, a piecewise constant function (the value at a given position is equal to the value at the nearest vertex of the mesh of the process).

getCovarianceModel()

Accessor to the covariance model.

Returns:
cov_modelCovarianceModel

Covariance model, if any.

getDescription()

Get the description of the process.

Returns:
descriptionDescription

Description of the process.

getFuture(*args)

Get possible futures from the current state of the ARMA process.

Parameters:
Nitint, N_{it} \geq 1

The number of time stamps of the future.

Nrealint, N_{real} \geq 1

The number of possible futures that are generated.

Default is: N_{real} = 1.

Notes

  • If N_{real} = 1:

A TimeSeries

One possible future of the ARMA process, from the current state over the next N_{it} time stamps.

  • If N_{real} > 1:

A ProcessSample

N_{real} possible futures of the ARMA process, from the current state over the next N_{it} time stamps.

Note that the time grid of each future begins at the last time stamp of the time grid associated to the time series which is extended.

getId()

Accessor to the object’s id.

Returns:
idint

Internal unique identifier.

getInputDimension()

Get the dimension of the domain \cD.

Returns:
nint

Dimension of the domain \cD: n.

getMACoefficients()

Accessor to the MA coefficients of the ARMA process.

Returns:
MACoeffARMACoefficients

The MA coefficients of the linear recurrence defining the process.

getMarginal(*args)

Get the k^{th} marginal of the random process.

Parameters:
kint or list of ints 0 \leq k < d

Index of the marginal(s) needed.

Returns:
marginalsProcess

Process defined with marginal(s) of the random process.

getMesh()

Get the mesh.

Returns:
meshMesh

Mesh over which the domain \cD is discretized.

getNThermalization()

Accessor to the number of time stamps used to thermalize the process.

Returns:
Ntherint, N_{ther} \geq 1

The number of time stamps used to make the ARMA realization be independent from its actual state.

Default precision is: \varepsilon = 2^{-53} \equiv 10^{-16}.

getName()

Accessor to the object’s name.

Returns:
namestr

The name of the object.

getOutputDimension()

Get the dimension of the domain \cD.

Returns:
dint

Dimension of the domain \cD.

getRealization()

Get a realization of the process.

Returns:
realizationField

Contains a mesh over which the process is discretized and the values of the process at the vertices of the mesh.

getSample(size)

Get n realizations of the process.

Parameters:
nint, n \geq 0

Number of realizations of the process needed.

Returns:
processSampleProcessSample

n realizations of the random process. A process sample is a collection of fields which share the same mesh \cM \in \Rset^n.

getShadowedId()

Accessor to the object’s shadowed id.

Returns:
idint

Internal unique identifier.

getState()

Accessor to the stored state of the ARMA process.

Returns:
ARMAstateARMAState

The state of the ARMA process which will be extended to the next time stamps. The state is composed with p values of the process and q values of the white noise.

getTimeGrid()

Get the time grid of observation of the process.

Returns:
timeGridRegularGrid

Time grid of a process when the mesh associated to the process can be interpreted as a RegularGrid. We check if the vertices of the mesh are scalar and are regularly spaced in \Rset but we don’t check if the connectivity of the mesh is conform to the one of a regular grid (without any hole and composed of ordered instants).

getTrend()

Accessor to the trend.

Returns:
trendTrendTransform

Trend, if any.

getVisibility()

Accessor to the object’s visibility state.

Returns:
visiblebool

Visibility flag.

getWhiteNoise()

Accessor to the white noise defining the ARMA process.

Returns:
whiteNoiseWhiteNoise

The white noise \varepsilon used in the linear recurrence of the ARMA process.

hasName()

Test if the object is named.

Returns:
hasNamebool

True if the name is not empty.

hasVisibleName()

Test if the object has a distinguishable name.

Returns:
hasVisibleNamebool

True if the name is not empty and not the default one.

isComposite()

Test whether the process is composite or not.

Returns:
isCompositebool

True if the process is composite (built upon a function and a process).

isNormal()

Test whether the process is normal or not.

Returns:
isNormalbool

True if the process is normal.

Notes

A stochastic process is normal if all its finite dimensional joint distributions are normal, which means that for all k \in \Nset and I_k \in \Nset^*, with cardI_k=k, there is \vect{m}_1, \dots, \vect{m}_k \in \Rset^d and \mat{C}_{1,\dots,k}\in\mathcal{M}_{kd,kd}(\Rset) such that:

\Expect{\exp\left\{i\Tr{\vect{X}}_{I_k} \vect{U}_{k}  \right\}} =
\exp{\left\{i\Tr{\vect{U}}_{k}\vect{M}_{k}-\frac{1}{2}\Tr{\vect{U}}_{k}\mat{C}_{1,\dots,k}\vect{U}_{k}\right\}}

where \Tr{\vect{X}}_{I_k} = (\Tr{X}_{\vect{t}_1}, \hdots, \Tr{X}_{\vect{t}_k}), \\Tr{vect{U}}_{k} = (\Tr{\vect{u}}_{1}, \hdots, \Tr{\vect{u}}_{k}) and \Tr{\vect{M}}_{k} = (\Tr{\vect{m}}_{1}, \hdots, \Tr{\vect{m}}_{k}) and \mat{C}_{1,\dots,k} is the symmetric matrix:

\mat{C}_{1,\dots,k} = \left(
\begin{array}{cccc}
  C(\vect{t}_1, \vect{t}_1) &C(\vect{t}_1, \vect{t}_2) & \hdots & C(\vect{t}_1, \vect{t}_{k}) \\
  \hdots & C(\vect{t}_2, \vect{t}_2)  & \hdots & C(\vect{t}_2, \vect{t}_{k}) \\
  \hdots & \hdots & \hdots & \hdots \\
  \hdots & \hdots & \hdots & C(\vect{t}_{k}, \vect{t}_{k})
\end{array}
\right)

A Gaussian process is entirely defined by its mean function m and its covariance function C (or correlation function R).

isStationary()

Test whether the process is stationary or not.

Returns:
isStationarybool

True if the process is stationary.

Notes

A process X is stationary if its distribution is invariant by translation: \forall k \in \Nset, \forall (\vect{t}_1, \dots, \vect{t}_k) \in \cD, \forall \vect{h}\in \Rset^n, we have:

(X_{\vect{t}_1}, \dots, X_{\vect{t}_k})
\stackrel{\mathcal{D}}{=} (X_{\vect{t}_1+\vect{h}}, \dots, X_{\vect{t}_k+\vect{h}})

setDescription(description)

Set the description of the process.

Parameters:
descriptionsequence of str

Description of the process.

setMesh(mesh)

Set the mesh.

Parameters:
meshMesh

Mesh over which the domain \cD is discretized.

setNThermalization(n)

Accessor to the number of time stamps used to thermalize the process.

Parameters:
Ntherint, N_{ther} \geq 1

The number of time stamps used to make the ARMA realization independent from its actual state.

setName(name)

Accessor to the object’s name.

Parameters:
namestr

The name of the object.

setShadowedId(id)

Accessor to the object’s shadowed id.

Parameters:
idint

Internal unique identifier.

setState(state)

Accessor to the stored state of the ARMA process.

Parameters:
ARMAstateARMAState

The state of the ARMA process which will be extended to the next time stamps. The state is composed with p values of the process and q values of the white noise.

setTimeGrid(timeGrid)

Set the time grid of observation of the process.

Returns:
timeGridRegularGrid

Time grid of observation of the process when the mesh associated to the process can be interpreted as a RegularGrid. We check if the vertices of the mesh are scalar and are regularly spaced in \Rset but we don’t check if the connectivity of the mesh is conform to the one of a regular grid (without any hole and composed of ordered instants).

setVisibility(visible)

Accessor to the object’s visibility state.

Parameters:
visiblebool

Visibility flag.

setWhiteNoise(whiteNoise)

Accessor to the white noise defining the ARMA process.

Parameters:
whiteNoiseWhiteNoise

The white noise \varepsilon used in the linear recurrence of the ARMA process.

Examples using the class

Estimate a multivariate ARMA process

Estimate a multivariate ARMA process

Estimate a scalar ARMA process

Estimate a scalar ARMA process

Create and manipulate an ARMA process

Create and manipulate an ARMA process