depth.curve.Tukey {curveDepth}  R Documentation 
Calculate Tukey curve depth using given points
Description
Calculates Tukey curve depth of each curve in objects
w.r.t. the
sample of curves in data
. Calculation of partial depth of each
single point can be either exact or approximate. If exact, modified method
of Dyckerhoff and Mozharovskyi (2016) is used; if approximate,
approximation is performed by projections on directions  points uniformly
distributed on the unit hypersphere.
Usage
depth.curve.Tukey(objects, data, nDirs = 100L, subs = TRUE, fracInt = 0.5,
fracEst = 0.5, subsamples = NULL, exactEst = TRUE, minMassObj = 0,
minMassDat = 0)
Arguments
objects 
A list where each element is a multivariate curve being a
list containing a matrix 
data 
A list where each element is a multivariate curve being a list
containing a matrix 
nDirs 
Number of directions used to inspect the space, drawn from the uniform distribution on the sphere. 
subs 
Whether to split each object into two disjunctive subsets (one for integrating and one for estimation) when computing the depth. 
fracInt 
Portion of an object used for integrating. 
fracEst 
Portion of an object used for estimation,
maximum: 
subsamples 
A list indicating subsamples of points for each curve in

exactEst 
Is calculation of depth for each reference point of the
curve exact ( 
minMassObj 
Minimal portion of the 
minMassDat 
minimal portion of the 
Value
A vector of doubles having the same length as objects
, whose
each entry is the depth of each element of objects
w.r.t.
data
.
References
Lafaye De Micheaux, P., Mozharovskyi, P. and Vimond, M. (2018). Depth for curve data and applications.
Dyckerhoff, R. and Mozharovskyi P. (2016). Exact computation of the halfspace depth. Computational Statistics and Data Analysis, 98, 1930.
Examples
library(curveDepth)
# Load digits and transform them to curves
data("mnistShort017")
n < 10 # cardinality of each class
m < 50 # number of points to sample
cst < 1/10 # a threshold constant
alp < 1/8 # a threshold constant
curves0 < images2curves(mnistShort017$`0`[, , 1:n])
curves1 < images2curves(mnistShort017$`1`[, , 1:n])
set.seed(1)
curves0Smpl < sample.curves(curves0, 2 * m)
curves1Smpl < sample.curves(curves1, 2 * m)
# Calculate depths
depthSpace = matrix(NA, nrow = n * 2, ncol = 2)
depthSpace[, 1] = depth.curve.Tukey(
c(curves0Smpl, curves1Smpl), curves0Smpl,
exactEst = TRUE, minMassObj = cst/m^alp)
depthSpace[, 2] = depth.curve.Tukey(
c(curves0Smpl, curves1Smpl), curves1Smpl,
exactEst = TRUE, minMassObj = cst/m^alp)
# Draw the DDplot
plot(NULL, xlim = c(0, 1), ylim = c(0, 1),
xlab = paste("Depth w.r.t. '0'"),
ylab = paste("Depth w.r.t. '1'"),
main = paste("DDplot for '0' vs '1'"))
grid()
# Draw the separating rule
dat1 < data.frame(cbind(
depthSpace, c(rep(0, n), rep(1, n))))
ddalpha1 < ddalpha.train(X3 ~ X1 + X2, data = dat1,
depth = "ddplot",
separator = "alpha")
ddnormal < ddalpha1$classifiers[[1]]$hyperplane[2:3]
pts < matrix(c(0, 0, 1, ddnormal[1] / ddnormal[2]),
nrow = 2, byrow = TRUE)
lines(pts, lwd = 2)
# Draw the points
points(depthSpace[1:n, ],
col = "red", lwd = 2, pch = 1)
points(depthSpace[(n + 1):(2 * n), ],
col = "blue", lwd = 2, pch = 3)