Learn R Programming

BKP (version 0.2.3)

kernel_matrix: Compute Kernel Matrix Between Input Locations

Description

Computes the kernel matrix between two sets of input locations using a specified kernel function. Supports both isotropic and anisotropic lengthscales. Available kernels include the Gaussian, Matérn 5/2, and Matérn 3/2.

Usage

kernel_matrix(
  X,
  Xprime = NULL,
  theta = 0.1,
  kernel = c("gaussian", "matern52", "matern32"),
  anisotropic = TRUE
)

Value

A numeric matrix of size \(n \times m\), where each element \(K_{ij}\) gives the kernel similarity between input \(X_i\) and \(X'_j\).

Arguments

X

A numeric matrix (or vector) of input locations with shape \(n \times d\).

Xprime

An optional numeric matrix of input locations with shape \(m \times d\). If NULL (default), it is set to X, resulting in a symmetric matrix.

theta

A positive numeric value or vector specifying the kernel lengthscale(s). If a scalar, the same lengthscale is applied to all input dimensions. If a vector, it must be of length d, corresponding to anisotropic scaling.

kernel

A character string specifying the kernel function. Must be one of "gaussian", "matern32", or "matern52".

anisotropic

Logical. If TRUE (default), theta is interpreted as a vector of per-dimension lengthscales. If FALSE, theta is treated as a scalar.

Details

Let \(\mathbf{x}\) and \(\mathbf{x}'\) denote two input points. The scaled distance is defined as $$ r = \left\| \frac{\mathbf{x} - \mathbf{x}'}{\boldsymbol{\theta}} \right\|_2. $$

The available kernels are defined as:

  • Gaussian: $$ k(\mathbf{x}, \mathbf{x}') = \exp(-r^2) $$

  • Matérn 5/2: $$ k(\mathbf{x}, \mathbf{x}') = \left(1 + \sqrt{5} r + \frac{5}{3} r^2 \right) \exp(-\sqrt{5} r) $$

  • Matérn 3/2: $$ k(\mathbf{x}, \mathbf{x}') = \left(1 + \sqrt{3} r \right) \exp(-\sqrt{3} r) $$

The function performs consistency checks on input dimensions and automatically broadcasts theta when it is a scalar.

References

Zhao J, Qing K, Xu J (2025). BKP: An R Package for Beta Kernel Process Modeling. arXiv. https://doi.org/10.48550/arXiv.2508.10447.

Rasmussen, C. E., & Williams, C. K. I. (2006). Gaussian Processes for Machine Learning. MIT Press.

Examples

Run this code
# Basic usage with default Xprime = X
X <- matrix(runif(20), ncol = 2)
K1 <- kernel_matrix(X, theta = 0.2, kernel = "gaussian")

# Anisotropic lengthscales with Matérn 5/2
K2 <- kernel_matrix(X, theta = c(0.1, 0.3), kernel = "matern52")

# Isotropic Matérn 3/2
K3 <- kernel_matrix(X, theta = 1, kernel = "matern32", anisotropic = FALSE)

# Use Xprime different from X
Xprime <- matrix(runif(10), ncol = 2)
K4 <- kernel_matrix(X, Xprime, theta = 0.2, kernel = "gaussian")

Run the code above in your browser using DataLab