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