R interface to the wdm C++ library, which provides efficient implementations of weighted dependence measures and related independence tests:

  • Pearsons’s rho
  • Spearmans’s rho
  • Kendall’s tau
  • Blomqvist’s beta
  • Hoeffding’s D

All measures are computed in O(n log n) time, where n is the number of observations.

For a detailed description of the functionality, see the API documentation.

Installation

  • the stable release from CRAN:
  • the development version from GitHub with:
# install.packages("devtools")
install_submodule_git <- function(x, ...) {
  install_dir <- tempfile()
  system(paste("git clone --recursive", shQuote(x), shQuote(install_dir)))
  devtools::install(install_dir, ...)
}
install_submodule_git("https://github.com/tnagler/wdm-r")

Cloning

This repo contains wdm as a submodule. For a full clone use

git clone --recurse-submodules <repo-address>

Examples

library(wdm)
Dependence between two vectors
x <- rnorm(100)
y <- rpois(100, 1)  # all but Hoeffding's D can handle ties
w <- runif(100)
wdm(x, y, method = "kendall")               # unweighted
#> [1] 0.03673702
wdm(x, y, method = "kendall", weights = w)  # weighted
#> [1] 0.04754892
Dependence in a matrix
x <- matrix(rnorm(100 * 3), 100, 3)
wdm(x, method = "spearman")               # unweighted
#>             [,1]        [,2]        [,3]
#> [1,]  1.00000000 -0.05848185 -0.01894989
#> [2,] -0.05848185  1.00000000  0.05215722
#> [3,] -0.01894989  0.05215722  1.00000000
wdm(x, method = "spearman", weights = w)  # weighted
#>             [,1]       [,2]       [,3]
#> [1,]  1.00000000 -0.1287907 0.02260982
#> [2,] -0.12879069  1.0000000 0.15002181
#> [3,]  0.02260982  0.1500218 1.00000000
Independence test
x <- rnorm(100)
y <- rpois(100, 1)  # all but Hoeffding's D can handle ties
w <- runif(100)
indep_test(x, y, method = "kendall")               # unweighted
#>     estimate statistic   p_value n_eff  method alternative
#> 1 -0.1327893 -1.550878 0.1209309   100 kendall   two-sided
indep_test(x, y, method = "kendall", weights = w)  # weighted
#>     estimate statistic    p_value   n_eff  method alternative
#> 1 -0.1655902 -1.698569 0.08940033 75.1224 kendall   two-sided