{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Create a custom stationary covariance model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This use case illustrates how the user can define his own stationary covariance model thanks to the object *UserDefinedStationaryCovarianceModel* defined from:\n", "\n", "- a mesh $\\mathcal{M}$ of dimension $n$ defined by the vertices $(\\underline{\\tau}_0,\\dots, \\underline{\\tau}_{N-1})$ and the associated simplices,\n", "- a collection of covariance matrices stored in the object *CovarianceMatrixCollection* noted $\\underline{\\underline{C}}_0, \\dots, \\underline{\\underline{C}}_{N-1}$ where $\\underline{\\underline{C}}_k$ $\\in \\mathcal{M}_{d \\times d}(\\mathbb{R})$ for $0 \\leq k \\leq N-1$\n", "\n", "Then we build a stationary covariance function which is a piecewise constant function on $\\mathcal{D}$ defined by:\n", "\n", "$$\\forall \\underline{\\tau} \\in \\mathcal{D}, \\, C^{stat}(\\underline{\\tau}) = \\underline{\\underline{C}}_k$$\n", "\n", "where $k$ is such that $\\underline{\\tau}_k$ is the vertex of $\\mathcal{M}$ the nearest to $\\underline{t}.$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from __future__ import print_function\n", "import openturns as ot" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# We detail the example described in the documentation\n", "# Create the time grid\n", "t0 = 0.0\n", "dt = 0.5\n", "N = int((20.0 - t0) / dt)\n", "mesh = ot.RegularGrid(t0, dt, N)\n", "\n", "# Create the covariance function\n", "\n", "\n", "def gamma(tau):\n", " return 1.0 / (1.0 + tau * tau)\n", "\n", "# Create the collection of HermitianMatrix\n", "coll = ot.CovarianceMatrixCollection()\n", "for k in range(N):\n", " t = mesh.getValue(k)\n", " matrix = ot.CovarianceMatrix([[gamma(t)]])\n", " coll.add(matrix)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
[[ 0.307692 ]]
" ], "text/plain": [ "class=CovarianceMatrix dimension=1 implementation=class=MatrixImplementation name=Unnamed rows=1 columns=1 values=[0.307692]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create the covariance model\n", "covmodel = ot.UserDefinedStationaryCovarianceModel(mesh, coll)\n", "\n", "# One vertex of the mesh\n", "tau = 1.5\n", "\n", "# Get the covariance function computed at the vertex tau\n", "covmodel(tau)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "class=Graph name=User covariance model implementation=class=GraphImplementation name=User covariance model title=User covariance model xTitle=Time yTitle=Covariance function axes=ON grid=ON legendposition=topright legendFontSize=1 drawables=[class=Drawable name=User Model implementation=class=Curve name=User Model derived from class=DrawableImplementation name=User Model legend=User Model data=class=Sample name=Unnamed implementation=class=SampleImplementation name=Unnamed size=40 dimension=2 data=[[0,1],[0.5,0.8],[1,0.5],[1.5,0.307692],[2,0.2],[2.5,0.137931],[3,0.1],[3.5,0.0754717],[4,0.0588235],[4.5,0.0470588],[5,0.0384615],[5.5,0.032],[6,0.027027],[6.5,0.0231214],[7,0.02],[7.5,0.0174672],[8,0.0153846],[8.5,0.0136519],[9,0.0121951],[9.5,0.0109589],[10,0.00990099],[10.5,0.00898876],[11,0.00819672],[11.5,0.00750469],[12,0.00689655],[12.5,0.0063593],[13,0.00588235],[13.5,0.00545703],[14,0.00507614],[14.5,0.00473373],[15,0.00442478],[15.5,0.00414508],[16,0.00389105],[16.5,0.00365965],[17,0.00344828],[17.5,0.00325468],[18,0.00307692],[18.5,0.00291333],[19,0.00276243],[19.5,0.00262295]] color=blue fillStyle=solid lineStyle=solid pointStyle=none lineWidth=1]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Graph of the spectral function\n", "x = ot.Sample(N, 2)\n", "for k in range(N):\n", " t = mesh.getValue(k)\n", " x[k, 0] = t\n", " value = covmodel(t)\n", " x[k, 1] = value[0, 0]\n", "\n", "# Create the curve of the spectral function\n", "curve = ot.Curve(x, 'User Model')\n", "\n", "# Create the graph\n", "myGraph = ot.Graph('User covariance model', 'Time', 'Covariance function', True)\n", "myGraph.add(curve)\n", "myGraph.setLegendPosition('topright')\n", "myGraph" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 1 }