R/ddchisqsympar.R

Defines functions ddchisqsympar

Documented in ddchisqsympar

ddchisqsympar <- function(p1, p2) {
  # Symmetrized Pearson Chi^2-distance
  
  k <- length(dim(p1))
  if (length(dim(p2)) != k)
    stop("p1 and p2 must have the same number of dimensions.")
  
  if (k == 1) {
    # If univariate
    if (length(p1) != length(p2))
      stop("p1 and p2 must be vectors with the same length.")
    dd <- ((p1 - p2)^2)/(p1 + p2)
    dd[is.nan(dd)] <- NA
    return(sum(dd, na.rm = TRUE))
  } else {
    # Multivariate
    dd <- ((as.numeric(p1) - as.numeric(p2))^2)/(as.numeric(p1) + as.numeric(p2))
    dd[is.nan(dd)] <- NA
    return(sum(dd, na.rm = TRUE))
  }
}

Try the dad package in your browser

Any scripts or data that you put into this service are public.

dad documentation built on Aug. 30, 2023, 5:06 p.m.