.. only:: html
.. note::
:class: sphx-glr-download-link-note
Click :ref:`here ` to download the full example code
.. rst-class:: sphx-glr-example-title
.. _sphx_glr_auto_probabilistic_modeling_stochastic_processes_plot_user_stationary_covmodel.py:
Create a custom stationary covariance model
===========================================
This use case illustrates how the user can define his own stationary covariance model thanks to the object *UserDefinedStationaryCovarianceModel* defined from:
- a mesh :math:`\mathcal{M}` of dimension :math:`n` defined by the vertices :math:`(\underline{\tau}_0,\dots, \underline{\tau}_{N-1})` and the associated simplices,
- a collection of covariance matrices stored in the object *CovarianceMatrixCollection* noted :math:`\underline{\underline{C}}_0, \dots, \underline{\underline{C}}_{N-1}` where :math:`\underline{\underline{C}}_k` :math:`\in \mathcal{M}_{d \times d}(\mathbb{R})` for :math:`0 \leq k \leq N-1`
Then we build a stationary covariance function which is a piecewise constant function on :math:`\mathcal{D}` defined by:
.. math::
\forall \underline{\tau} \in \mathcal{D}, \, C^{stat}(\underline{\tau}) = \underline{\underline{C}}_k
where :math:`k` is such that :math:`\underline{\tau}_k` is the vertex of :math:`\mathcal{M}` the nearest to :math:`\underline{t}.`
.. code-block:: default
from __future__ import print_function
import openturns as ot
import openturns.viewer as viewer
from matplotlib import pylab as plt
ot.Log.Show(ot.Log.NONE)
We detail the example described in the documentation
Create the time grid
.. code-block:: default
t0 = 0.0
dt = 0.5
N = int((20.0 - t0) / dt)
mesh = ot.RegularGrid(t0, dt, N)
# Create the covariance function
def gamma(tau):
return 1.0 / (1.0 + tau * tau)
# Create the collection of HermitianMatrix
coll = ot.CovarianceMatrixCollection()
for k in range(N):
t = mesh.getValue(k)
matrix = ot.CovarianceMatrix([[gamma(t)]])
coll.add(matrix)
Create the covariance model
.. code-block:: default
covmodel = ot.UserDefinedStationaryCovarianceModel(mesh, coll)
# One vertex of the mesh
tau = 1.5
# Get the covariance function computed at the vertex tau
covmodel(tau)
.. raw:: html
[[ 0.307692 ]]
Graph of the spectral function
.. code-block:: default
x = ot.Sample(N, 2)
for k in range(N):
t = mesh.getValue(k)
x[k, 0] = t
value = covmodel(t)
x[k, 1] = value[0, 0]
# Create the curve of the spectral function
curve = ot.Curve(x, 'User Model')
# Create the graph
myGraph = ot.Graph('User covariance model', 'Time', 'Covariance function', True)
myGraph.add(curve)
myGraph.setLegendPosition('topright')
view = viewer.View(myGraph)
plt.show()
.. image:: /auto_probabilistic_modeling/stochastic_processes/images/sphx_glr_plot_user_stationary_covmodel_001.png
:alt: User covariance model
:class: sphx-glr-single-img
.. rst-class:: sphx-glr-timing
**Total running time of the script:** ( 0 minutes 0.083 seconds)
.. _sphx_glr_download_auto_probabilistic_modeling_stochastic_processes_plot_user_stationary_covmodel.py:
.. only :: html
.. container:: sphx-glr-footer
:class: sphx-glr-footer-example
.. container:: sphx-glr-download sphx-glr-download-python
:download:`Download Python source code: plot_user_stationary_covmodel.py `
.. container:: sphx-glr-download sphx-glr-download-jupyter
:download:`Download Jupyter notebook: plot_user_stationary_covmodel.ipynb `
.. only:: html
.. rst-class:: sphx-glr-signature
`Gallery generated by Sphinx-Gallery `_