cdm {multivariance} | R Documentation |
computes the centered distance matrix
cdm(x, normalize = TRUE, psi = NULL, p = NULL, isotropic = FALSE, external.dm.fun = NULL)
x |
matrix, each row of the matrix is treated as one sample |
normalize |
logical, indicates if the matrix should be normalized |
psi |
if it is |
p |
numeric, if it is a value between 1 and 2 then the Minkowski distance with parameter p is used. |
isotropic |
logical, indicates if psi of the Euclidean distance matrix should be computed, i.e., if an isotropic distance should be used. |
external.dm.fun |
here one can supply an external function, which computes the distance matrix given |
The centered distance matrices are required for the computation of (total / m-) multivariance.
If normalize = TRUE
then the value of multivariance is comparable and meaningful. It can be compared to the rejection.level
or its p-value multivariance.pvalue
can be computed.
More details: If normalize = TRUE
the matrix is scaled such that the multivariance based on it, times the sample size, has in the limit - in the case of independence - the distribution of an L^2 norm of a Gaussian process with known expectation.
As default the Euclidean distance is used. The parameters psi
, p
, isotropic
and external.dm.fun
can be used to select a different distance. In particular, external.dm.fun
can be used to provide any function which calculates a distance matrix for the rows of a given matrix.
For the theoretic background see the references given on the main help page of this package: multivariance-package.
x = coins(100) cdm(x) # fast euclidean distances cdm(x,psi = function(x,y) sqrt(sum((x-y)^2))) # this is identical to the previous (but slower) # the function cdm does the following three lines in a faster way N = nrow(x) C = diag(N) - matrix(1/N,nrow = N,ncol = N) A = - C %*% as.matrix(stats::dist(x,method="euclidean")) %*% C #' all(abs(A- cdm(x,normalize = FALSE)) < 10^(-12))