Compute the metric depth proposed by Geenens et al. (2023) , which is one generalization of statistical depth function onto the arbitrary metric space. Our implementation assumes that given the multivariate data it computes the (empirical) depth for all observations using under the Euclidean regime.
metricdepth(data)
an \((n\times p)\) matrix whose rows are observations.
a length-\(n\) vector of empirical metric depth values.
Geenens G, Nieto-Reyes A, Francisci G (2023). “Statistical Depth in Abstract Metric Spaces.” Statistics and Computing, 33(2), 46. ISSN 0960-3174, 1573-1375.
if (FALSE) {
## use simple example of iris dataset
data(iris)
X <- as.matrix(iris[,1:4])
y <- as.factor(iris[,5])
## compute the metric depth
mdX <- metricdepth(X)
## visualize
# 2-d embedding for plotting by MDS
X2d <- maotai::cmds(X, ndim=2)$embed
# get a color code for the metric depth
pal = colorRampPalette(c("yellow","red"))
# draw
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,2), pty="s")
plot(X2d, pch=19, main="by class", xlab="", ylab="", col=y)
plot(X2d, pch=19, main="by depth", xlab="", ylab="", col=pal(150)[order(mdX)])
legend("bottomright", col=pal(2), pch=19, legend=round(range(mdX), 2))
par(opar)
}