Estimates the directed Kullback-Leibler divergence between two
bivariate continuous distributions by numerical integration of kernel
density estimates. Also computes pairwise divergences among groups and
exact divergences for discrete, bivariate normal, bivariate Pareto type II,
and independent bivariate Weibull models. The kernel estimator follows
Chackochan, Sankaran and Nair (2026)
BivKLD estimates directed Kullback-Leibler (KL) divergence between
bivariate distributions. Its kernel estimator follows Chackochan, Sankaran,
and Unnikrishnan Nair (2026) and uses bivariate Gaussian kernel densities from
the ks package.
Install the submitted source archive with:
install.packages("BivKLD_0.1.0.tar.gz", repos = NULL, type = "source")
library(BivKLD)
set.seed(2026)
x <- cbind(rnorm(100), rnorm(100))
y <- cbind(rnorm(100, 0.5), rnorm(100, -0.25))
biv_kld(x, y, bandwidth = "normal")
biv_kld(y, x, bandwidth = "normal")
KL divergence is directed, so the two results need not be equal. The default
bandwidth selector is unconstrained smoothed cross-validation ("scv"), as in
the reference paper. The normal-scale selector above is useful for quick
exploration.
measurements <- iris[, c("Sepal.Length", "Sepal.Width")]
biv_kld_matrix(measurements, iris$Species, bandwidth = "normal")
Rows are source distributions and columns are comparison distributions, so
entry [i, j] estimates D(group_i || group_j).
biv_kld_discrete(c(0.2, 0.3, 0.1, 0.4),
c(0.1, 0.4, 0.2, 0.3))
biv_kld_normal(c(-2, 2), matrix(c(1, 1, 1, 2), 2),
c(-2, 2), matrix(c(3, 3, 3, 6), 2))
Chackochan, R., Sankaran, P. G., & Unnikrishnan Nair, N. (2026). Bivariate Kullback-Leibler divergence. Communications in Statistics - Theory and Methods, 55(1), 292-312. doi:10.1080/03610926.2025.2496687