Gneiting#

class gpjax.kernels.Gneiting(space_dims, time_dim, variance=1.0, space_lengthscale=1.0, time_lengthscale=1.0, alpha=0.5, beta=0.5, gamma=0.5, compute_engine=<gpjax.kernels.computations.dense.DenseKernelComputation object>)[source]#

Bases: AbstractKernel

The Gneiting nonseparable space–time kernel.

Computes the covariance for a pair of inputs with spatial separation \(h\) over the space columns and time lag \(u\) over the time column (Gneiting, 2002, eq. 14):

\[ k(h, u) = \frac{\sigma^2}{\psi(u)^{d/2}} \exp\!\left(-\frac{(\lVert h\rVert/\ell_s)^{2\gamma}} {\psi(u)^{\beta\gamma}}\right), \qquad \psi(u) = \left(\frac{\lvert u\rvert}{\ell_t}\right)^{2\alpha} + 1, \]
where \(d\) is the number of space columns.

The kernel is stationary, but it is not separable: as the time lag grows, \(\psi(u)\) grows and the spatial correlation decays more slowly. The interaction parameter \(\beta \in [0, 1]\) controls this effect, and \(\beta = 0\) gives the separable product of a powered exponential kernel in space and a generalised Cauchy kernel in time. \(\alpha \in (0, 1]\) and \(\gamma \in (0, 1]\) set the smoothness in time and in space.

The trainable parameters \(\alpha\), \(\beta\) and \(\gamma\) are bounded to the open interval \((0, 1)\). To fix one of them at a bound, pass a non-trainable value, for example paramax.non_trainable(jnp.array(1.0)).

The kernel has two lengthscales and no closed-form spectral density, so it is not a StationaryKernel subclass and it does not support random Fourier features.

Parameters:
  • space_dims (list[int])

  • time_dim (int)

  • variance (Any)

  • space_lengthscale (Any)

  • time_lengthscale (Any)

  • alpha (Any)

  • beta (Any)

  • gamma (Any)

  • compute_engine (AbstractKernelComputation)