GaussianProcess

(Source code, png)

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

Gaussian processes.

Available constructor:

GaussianProcess(trend, covarianceModel, mesh)

GaussianProcess(covarianceModel, mesh)

Parameters:
trendTrendTransform

Trend function of the process. By default the trend is null.

covarianceModelCovarianceModel

Temporal covariance model C.

meshMesh

Mesh \cM over which the domain \cD is discretized.

Notes

GaussianProcess creates the processes, X: \Omega \times\cD \mapsto \Rset^d where \cD \in \Rset^n, from their temporal covariance function \cC: \cD \times \cD \mapsto \cM_{d \times d}(\Rset), which writes, in the stationary case: \cC^{stat}: \cD \mapsto \cM_{d \times d}(\Rset). A process is normal, if all its finite dimensional joint distributions are normal (See the method isNormal() for a detailed definition).

The gaussian processes may have a trend: in that case, the Gaussian process is the sum of the trend function f_{trend}: \Rset^n \mapsto \Rset^d and a zero-mean Gaussian process.

Examples

>>> import openturns as ot
>>> ot.RandomGenerator.SetSeed(0)
>>> # Amplitude values
>>> amplitude = [1.0]
>>> # Scale values
>>> scale = [1.0]
>>> # Second order model with parameters
>>> covarianceModel = ot.AbsoluteExponential(scale, amplitude)
>>> # Time grid
>>> tmin = 0.0
>>> step = 0.1
>>> n = 11
>>> meshGrid = ot.RegularGrid(tmin, step, n)
>>> size = 100
>>> myProcess = ot.GaussianProcess(covarianceModel, meshGrid)
>>> myProcess.setSamplingMethod(myProcess.CHOLESKY)

Methods

getClassName()

Accessor to the object's name.

getContinuousRealization()

Get a continuous realization.

getCovarianceModel()

Get the covariance model.

getDescription()

Get the description of the process.

getFuture(*args)

Prediction of the N future iterations of the process.

getInputDimension()

Get the dimension of the domain \cD.

getMarginal(indices)

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

getMesh()

Get the mesh.

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.

getSamplingMethod()

Get the used method for getRealization.

getTimeGrid()

Get the time grid of observation of the process.

getTrend()

Get the trend function.

hasName()

Test if the object is named.

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.

isTrendStationary()

Tell if the process is trend stationary or not.

setDescription(description)

Set the description of the process.

setMesh(mesh)

Set the mesh.

setName(name)

Accessor to the object's name.

setSamplingMethod(samplingMethod)

Set the used method for getRealization.

setTimeGrid(timeGrid)

Set the time grid of observation of the process.

__init__(*args)
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()

Get the covariance model.

Returns:
covarianceModelCovarianceModel

Temporal covariance model C.

getDescription()

Get the description of the process.

Returns:
descriptionDescription

Description of the process.

getFuture(*args)

Prediction of the N future iterations of the process.

Parameters:
stepNumberint, N \geq 0

Number of future steps.

sizeint, size \geq 0, optional

Number of futures needed. Default is 1.

Returns:
predictionProcessSample or TimeSeries

N future iterations of the process. If size = 1, prediction is a TimeSeries. Otherwise, it is a ProcessSample.

getInputDimension()

Get the dimension of the domain \cD.

Returns:
nint

Dimension of the domain \cD: n.

getMarginal(indices)

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.

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.

getSamplingMethod()

Get the used method for getRealization.

Returns:
samplingMethodint

Used method for sampling.

Notes

Available parameters are :

  • 0 (GaussianProcess.CHOLESKY) : Cholesky factor sampling (default method)

  • 1 (GaussianProcess.HMAT) : H-Matrix method (if H-Mat available)

  • 2 (GaussianProcess.GALLIGAOGIBBS) : Gibbs method (in dimension 1 only)

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()

Get the trend function.

Returns:
trendTrendTransform

Trend function.

hasName()

Test if the object is named.

Returns:
hasNamebool

True if the name is not empty.

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}})

isTrendStationary()

Tell if the process is trend stationary or not.

Returns:
isTrendStationarybool

True if the process is trend stationary.

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.

setName(name)

Accessor to the object’s name.

Parameters:
namestr

The name of the object.

setSamplingMethod(samplingMethod)

Set the used method for getRealization.

Available parameters are :

  • 0 (GaussianProcess.CHOLESKY) : Cholesky factor sampling (default method)

  • 1 (GaussianProcess.HMAT) : H-Matrix method (if H-Mat available)

  • 2 (GaussianProcess.GALLIGAOGIBBS) : Gibbs method (in dimension 1 only)

Parameters:
samplingMethodint

Fix a method for sampling.

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).

Examples using the class

Estimate a non stationary covariance function

Estimate a non stationary covariance function

Estimate a stationary covariance function

Estimate a stationary covariance function

Add a trend to a process

Add a trend to a process

Create a gaussian process from a cov. model using HMatrix

Create a gaussian process from a cov. model using HMatrix

Use the Box-Cox transformation

Use the Box-Cox transformation

Create a normal process

Create a normal process

Draw a field

Draw a field

Create a process from random vectors and processes

Create a process from random vectors and processes

Sample trajectories from a Gaussian Process with correlated outputs

Sample trajectories from a Gaussian Process with correlated outputs

Draw fields

Draw fields

Trend computation

Trend computation

Compare covariance models

Compare covariance models

Kriging : generate trajectories from a metamodel

Kriging : generate trajectories from a metamodel

Kriging : draw covariance models

Kriging : draw covariance models

Validation of a Karhunen-Loeve decomposition

Validation of a Karhunen-Loeve decomposition

Metamodel of a field function

Metamodel of a field function

Create an event based on a process

Create an event based on a process

Estimate a process-based event probability

Estimate a process-based event probability

Estimate Sobol indices on a field to point function

Estimate Sobol indices on a field to point function