kde_polysph: Polyspherical kernel density estimator

View source: R/RcppExports.R

kde_polysphR Documentation

Polyspherical kernel density estimator

Description

Computes the kernel density estimator for data on the polysphere \mathcal{S}^{d_1} \times \cdots \times \mathcal{S}^{d_r}. Given a sample \boldsymbol{X}_1,\ldots,\boldsymbol{X}_n, this estimator is

\hat{f}(\boldsymbol{x};\boldsymbol{h})=\sum_{i=1}^n L_{\boldsymbol{h}}(\boldsymbol{x},\boldsymbol{X}_i)

for a kernel L and a vector of bandwidths \boldsymbol{h}.

Usage

kde_polysph(x, X, d, h, weights = as.numeric(c()), log = FALSE,
  wrt_unif = FALSE, normalized = TRUE, intrinsic = FALSE,
  norm_x = FALSE, norm_X = FALSE, kernel = 1L, kernel_type = 1L,
  k = 10)

Arguments

x

a matrix of size c(nx, sum(d) + r) with the evaluation points.

X

a matrix of size c(n, sum(d) + r) with the sample.

d

vector of size r with dimensions.

h

vector of size r with bandwidths.

weights

weights for each observation. If provided, a vector of size n with the weights for multiplying each kernel. If not provided, set internally to rep(1 / n, n), which gives the standard estimator.

log

compute the logarithm of the density? Defaults to FALSE.

wrt_unif

flag to return a density with respect to the uniform measure. If FALSE (default), the density is with respect to the Lebesgue measure.

normalized

flag to compute the normalizing constant of the kernel and include it in the kernel density estimator. Defaults to TRUE.

intrinsic

use the intrinsic distance, instead of the extrinsic-chordal distance, in the kernel? Defaults to FALSE.

norm_x, norm_X

ensure a normalization of the data? Defaults to FALSE.

kernel

kernel employed: 1 for von Mises–Fisher (default); 2 for Epanechnikov; 3 for softplus.

kernel_type

type of kernel employed: 1 for product kernel (default); 2 for spherically symmetric kernel.

k

softplus kernel parameter. Defaults to 10.0.

Value

A column vector of size c(nx, 1) with the evaluation of kernel density estimator.

Examples

# Simple check on S^1 x S^2
n <- 1e3
d <- c(1, 2)
mu <- c(0, 1, 0, 0, 1)
kappa <- c(5, 5)
h <- c(0.2, 0.2)
X <- r_vmf_polysph(n = n, d = d, mu = mu, kappa = kappa)
kde_polysph(x = rbind(mu), X = X, d = d, h = h)
d_vmf_polysph(x = rbind(mu), d = d, mu = mu, kappa = kappa)

polykde documentation built on April 16, 2025, 1:11 a.m.