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.
| 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 |
# From CRAN
install.packages("depthR")
# Development version
devtools::install_github("penny4nonsense/depthR")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)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)