#' Title
#'
#' @param prob
#' @param q
#' @param p
#'
#' @return
#' @export
#'
#' @examples
JS <- function(prob, q, p) {
# Compute approximate densities
x <- seq(min(q, p), max(q, p), l = 201)
qpmf <- pmf(x, prob, q)
ppmf <- pmf(x, prob, p)
m <- 0.5 * (ppmf + qpmf)
JS <- suppressWarnings(0.5 * (sum(stats::na.omit(ppmf * log(ppmf / m, base = 2))) +
sum(stats::na.omit(qpmf * log(qpmf / m, base = 2)))))
return(JS)
}
# Compute approximate discretized density (like a probability mass function)
# at each x (equally spaced) given quantiles q with probabilities p
pmf <- function(x, p, q) {
qcdf <- stats::approx(q, p, xout = x, yleft = 0, yright = 1, ties = max, na.rm = TRUE)$y
qpmf <- c(0, diff(qcdf) / (x[2] - x[1]))
return(qpmf / sum(qpmf))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.