Description
Multivariate Depth Functions for General Dimension.
Description
Efficient computation of multivariate statistical depth functions in arbitrary dimension d. Implements Mahalanobis depth, Tukey (halfspace) depth, Liu simplicial depth (via adaptive Monte Carlo), projection depth, and spatial depth. Provides depth-based medians, central regions, outlier detection, and depth-depth plots. 'C++' backends via 'Rcpp' and 'RcppEigen' ensure performance at large n and d. References: Liu (1990) <doi:10.1214/aos/1176347507>, Zuo and Serfling (2000) <doi:10.1214/aos/1016218226>, Vardi and Zhang (2000) <doi:10.1073/pnas.97.4.1423>.
README.md
depthR
Multivariate depth functions for general dimension.
depthR provides efficient, general-purpose implementations of statistical depth functions in arbitrary dimension d. The goal is to make depth-based inference — robust location, outlier detection, multivariate ranks, depth-based quantile regions — actually usable by any R user, at any reasonable d and n.
Existing R packages for depth (ddalpha, depth, DepthProc) cap out at low dimension or are too slow for practical use at large d. depthR uses C++ backends via RcppEigen and RcppParallel to remove that barrier.
Depth Functions
| Function | Notes |
|---|---|
mahalanobis_depth() | Baseline; deepest point is the mean |
tukey_depth() | Halfspace depth; adaptive random projection approximation |
simplicial_depth() | Liu (1990); adaptive Monte Carlo with Bernoulli stopping rule |
projection_depth() | Stahel-Donoho outlyingness; robust and affine invariant |
spatial_depth() | Closed-form estimate; fastest option for large n and d |
Installation
# From CRAN
install.packages("depthR")
# Development version
devtools::install_github("penny4nonsense/depthR")
Quick Start
library(depthR)
set.seed(42)
data <- matrix(rnorm(1000), nrow = 200, ncol = 5)
# Compute depth once — derive everything else cheaply
dd <- compute_depth(data, depth_fn = simplicial_depth)
# Depth-based median — robust multivariate location estimate
median(dd)
# Depth-based ranks — rank 1 is the deepest point
head(rank(dd))
# Outlier detection — bottom 5% by depth
outliers(dd, threshold = 0.05)
# Central region — inner 50% of data
central_region(dd, alpha = 0.50)
# Plot — outliers flagged in red
plot(dd)
DD-Plot
The depth-depth plot is the multivariate analog of the QQ-plot, useful for two-sample comparison:
x <- matrix(rnorm(400), nrow = 200, ncol = 2)
y <- matrix(rnorm(400, mean = 2), nrow = 200, ncol = 2)
dd_plot(x, y, depth_fn = tukey_depth)
References
- Liu, R. Y. (1990). On a notion of data depth based on random simplices. Annals of Statistics, 18(1), 405–414.
- Vardi, Y. & Zhang, C.-H. (2000). The multivariate L1-median and associated data depth. PNAS, 97(4), 1423–1426.
- Zuo, Y. & Serfling, R. (2000). General notions of statistical depth function. Annals of Statistics, 28(2), 461–482.
- Serfling, R. (2006). Depth functions in nonparametric multivariate inference. DIMACS Series in Discrete Mathematics, 72, 1–16.