R interface to the wdm C++ library, which provides efficient implementations of weighted dependence measures and related independence tests:
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.
install.packages("wdm")
This repo contains wdm as a submodule. For a full clone use
git clone --recurse-submodules <repo-address>
library(wdm)
x <- matrix(rnorm(100 * 3), 100, 3) wdm(x, method = "spearman") # unweighted #> [,1] [,2] [,3] #> [1,] 1.0000000 -0.23383138 -0.05200120 #> [2,] -0.2338314 1.00000000 -0.03560756 #> [3,] -0.0520012 -0.03560756 1.00000000 wdm(x, method = "spearman", weights = w) # weighted #> [,1] [,2] [,3] #> [1,] 1.0000000 -0.13603502 -0.12951931 #> [2,] -0.1360350 1.00000000 -0.07473239 #> [3,] -0.1295193 -0.07473239 1.00000000
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.05555546 -0.6291182 0.5292717 100 kendall two-sided indep_test(x, y, method = "kendall", weights = w) # weighted #> estimate statistic p_value n_eff method alternative #> 1 -0.09298105 -0.9139628 0.3607364 75.5839 kendall two-sided