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")# 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")This repo contains wdm as a submodule. For a full clone use
git clone --recurse-submodules <repo-address>
library(wdm)x <- rnorm(100)
y <- rpois(100, 1)
w <- runif(100)
wdm(x, y, method = "kendall") # unweighted
#> [1] 0.04547414
wdm(x, y, method = "kendall", weights = w) # weighted
#> [1] 0.07764891x <- matrix(rnorm(100 * 3), 100, 3)
wdm(x, method = "spearman") # unweighted
#> [,1] [,2] [,3]
#> [1,] 1.00000000 0.10045005 -0.03279928
#> [2,] 0.10045005 1.00000000 -0.02744674
#> [3,] -0.03279928 -0.02744674 1.00000000
wdm(x, method = "spearman", weights = w) # weighted
#> [,1] [,2] [,3]
#> [1,] 1.00000000 0.22080359 -0.05369922
#> [2,] 0.22080359 1.00000000 0.01192067
#> [3,] -0.05369922 0.01192067 1.00000000Chatterjee’s xi measures the dependence of the second argument on the first, so reversing the arguments can change the result:
wdm(x[, 1], x[, 2], method = "chatterjee")
#> [1] 0.01740174
wdm(x[, 2], x[, 1], method = "chatterjee")
#> [1] 0.03510351x <- rnorm(100)
y <- rpois(100, 1)
w <- runif(100)
indep_test(x, y, method = "kendall") # unweighted
#> estimate statistic p_value n_eff method alternative
#> 1 0.02140979 0.2799245 0.7795354 100 kendall two-sided
indep_test(x, y, method = "kendall", weights = w) # weighted
#> estimate statistic p_value n_eff method alternative
#> 1 0.04616801 0.5015067 0.6160145 71.2503 kendall two-sidedFor Chatterjee’s xi, x is the predictor and
y is the response. Its natural one-sided alternative is
"greater":
indep_test(x, y, method = "chatterjee", alternative = "greater")
#> estimate statistic p_value n_eff method alternative
#> 1 -0.04496517 -0.576012 0.7176965 100 chatterjee greater