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)

Arguments

x

A numeric matrix or numeric vector

y

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

by_rows

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

Value

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.

Examples

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