X <- rnorm(100)
Y <- X + 3 * rnorm(100)
distcov(X, Y) # standard distance covariance
distcov(X, Y, metr.X = "gaussauto", metr.Y = "gaussauto")
# Gaussian distance with bandwidth choice based on median heuristic
distcov(X, Y, metr.X = c("alpha", 0.5), metr.Y = c("alpha", 0.5))
# alpha distance covariance with alpha = 0.5.
#Define a user-specified (slow) version of the alpha metric
alpha_user <- function(X, prm = 1, kernel = FALSE) {
as.matrix(dist(X)) ^ prm
}
distcov(X, Y, metr.X = c("alpha", 0.5), metr.Y = c("alpha", 0.5))
# Gives the same result as before.
#User-specified Gaussian kernel function
gauss_kernel <- function(X, prm = 1, kernel = TRUE) {
exp(as.matrix(dist(X)) ^ 2 / 2 / prm ^ 2)
}
distcov(X, Y, metr.X = c("gauss_kernel", 2), metr.Y = c("gauss_kernel", 2))
# calculates the distance covariance using the corresponding kernel-induced metric
distcov(X, Y, metr.X = c("gaussian", 2), metr.Y = c("gaussian", 2))
# same result
Y <- matrix(nrow = 100, ncol = 2)
X <- rnorm(300)
dim(X) <- c(100, 3)
Z <- rnorm(100)
Y <- matrix(nrow = 100, ncol = 2)
Y[, 1] <- X[, 1] + Z
Y[, 2] <- 3 * Z
distcov(X, Y)
distcov(X, Y, affine = TRUE)
# affinely invariant distance covariance
distcov(X, Y, standardize = TRUE)
## distance covariance standardizing the components of X and Y
Run the code above in your browser using DataLab