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:
AbstractKernelThe 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):
where \(d\) is the number of space columns.\[ 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, \]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
StationaryKernelsubclass and it does not support random Fourier features.