.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_data_analysis/estimate_stochastic_processes/plot_estimate_multivariate_arma.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_data_analysis_estimate_stochastic_processes_plot_estimate_multivariate_arma.py: Estimate a multivariate ARMA process ==================================== .. GENERATED FROM PYTHON SOURCE LINES 7-33 The objective of the Use Case is to estimate a multivariate ARMA model from a stationary time series using the maximum likelihood estimator and a centered normal white noise. The data can be a unique time series or several time series collected in a process sample. We estimate :math:`(\underline{\beta}, \sigma^2)` thanks to the class:`~openturns.ARMALikelihoodFactory` object and its method *build*, acting on a time series or on a sample of time series. It produces a result of type *ARMA*. Note that no evaluation of selection criteria such as *AIC* and *BIC* is done. The synthetic data is generated from the 2-d ARMA model: .. math:: \begin{aligned} X_{0,t} - 0.5 X_{0,t-1} - 0.1 X_{1,t-1} = E_{0,t} - 0.4 E_{0,t-1} \\ X_{1,t} - 0.4 X_{0,t-1} - 0.5 X_{1,t-1} - 0.25 X_{0,t-2} = E_{1,t} - 0.4 E_{1,t-1} \end{aligned} with E the white noise: .. math:: E \sim \mathcal{N} ([0,0], [0.1,0.2]) .. GENERATED FROM PYTHON SOURCE LINES 35-39 .. code-block:: Python import openturns as ot ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 40-41 Create a 2-d ARMA process .. GENERATED FROM PYTHON SOURCE LINES 41-66 .. code-block:: Python p = 2 q = 1 dim = 2 # Tmin , Tmax and N points for TimeGrid dt = 1.0 size = 400 timeGrid = ot.RegularGrid(0.0, dt, size) # white noise cov = ot.CovarianceMatrix([[0.1, 0.0], [0.0, 0.2]]) whiteNoise = ot.WhiteNoise(ot.Normal([0.0] * dim, cov), timeGrid) # AR/MA coefficients ar = ot.ARMACoefficients(p, dim) ar[0] = ot.SquareMatrix([[-0.5, -0.1], [-0.4, -0.5]]) ar[1] = ot.SquareMatrix([[0.0, 0.0], [-0.25, 0.0]]) ma = ot.ARMACoefficients(q, dim) ma[0] = ot.SquareMatrix([[-0.4, 0.0], [0.0, -0.4]]) # ARMA model creation arma = ot.ARMA(ar, ma, whiteNoise) arma .. raw:: html
class= ARMA timeGrid=class=RegularGrid name=Unnamed start=0 step=1 n=400 coefficients AR=class=ARMACoefficients, shift=0, value=class=SquareMatrix dimension=2 implementation=class=MatrixImplementation name=Unnamed rows=2 columns=2 values=[-0.5,-0.4,-0.1,-0.5], shift=1, value=class=SquareMatrix dimension=2 implementation=class=MatrixImplementation name=Unnamed rows=2 columns=2 values=[0,-0.25,0,0] coefficients MA=class=ARMACoefficients, shift=0, value=class=SquareMatrix dimension=2 implementation=class=MatrixImplementation name=Unnamed rows=2 columns=2 values=[-0.4,0,0,-0.4] noiseDistribution= class=Normal name=Normal dimension=2 mean=class=Point name=Unnamed dimension=2 values=[0,0] sigma=class=Point name=Unnamed dimension=2 values=[0.316228,0.447214] correlationMatrix=class=CorrelationMatrix dimension=2 implementation=class=MatrixImplementation name=Unnamed rows=2 columns=2 values=[1,0,0,1] state= class= ARMAState x= class=Sample name=Unnamed implementation=class=SampleImplementation name=Unnamed size=2 dimension=2 data=[[-0.420367,-1.68311],[0.0105101,-1.12405]] epsilon= class=Sample name=Unnamed implementation=class=SampleImplementation name=Unnamed size=1 dimension=2 data=[[0.29469,-0.47215]]


.. GENERATED FROM PYTHON SOURCE LINES 67-68 Create a realization .. GENERATED FROM PYTHON SOURCE LINES 68-70 .. code-block:: Python timeSeries = ot.TimeSeries(arma.getRealization()) .. GENERATED FROM PYTHON SOURCE LINES 71-72 Estimate the process from the previous realization .. GENERATED FROM PYTHON SOURCE LINES 72-77 .. code-block:: Python factory = ot.ARMALikelihoodFactory(p, q, dim) factory.setInitialConditions(ar, ma, cov) arma_est = ot.ARMA(factory.build(timeSeries)) print("Estimated ARMA= ", arma_est) .. rst-class:: sphx-glr-script-out .. code-block:: none Estimated ARMA= ARMA(X_{0,t} - 0.383177 X_{0,t-1} - 0.249709 X_{1,t-1} + 0.158317 X_{0,t-2} + 0.0745476 X_{1,t-2} = E_{0,t} - 0.298018 E_{0,t-1} - 0.154134 E_{1,t-1} X_{1,t} - 0.350859 X_{0,t-1} - 0.614683 X_{1,t-1} - 0.274685 X_{0,t-2} + 0.0364205 X_{1,t-2} = E_{1,t} - 0.106077 E_{0,t-1} - 0.493617 E_{1,t-1}, E_t ~ Normal(mu = [0,0], sigma = [0.297786,0.425897], R = [[ 1 -0.0794717 ] [ -0.0794717 1 ]])) .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 4.095 seconds) .. _sphx_glr_download_auto_data_analysis_estimate_stochastic_processes_plot_estimate_multivariate_arma.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_estimate_multivariate_arma.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_estimate_multivariate_arma.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_estimate_multivariate_arma.zip `