This function calculates the Jensen Shannon Divergence for the rows or columns of a numeric matrix or for two numeric vectors.

CalcJSDivergence(x, y = NULL, by_rows = TRUE)



A numeric matrix or numeric vector


A numeric vector. y must be specified if x is a numeric vector.


Logical. If x is a matrix, should distances be calculated by rows?


If x is a matrix, this returns an square and symmetric matrix. The i,j entries correspond to the Hellinger Distance between the rows of x

(or the columns of x if by_rows = FALSE). If x and y

are vectors, this returns a numeric scalar whose value is the Hellinger Distance between x and y.


x <- rchisq(n = 100, df = 8)
y <- x^2
CalcJSDivergence(x = x, y = y)
#> [1] 0.01878659

mymat <- rbind(x, y)
CalcJSDivergence(x = mymat)
#>            x          y
#> x 0.00000000 0.01878659
#> y 0.01878659 0.00000000