sample.curves {curveDepth} R Documentation

## Sample points on curves

### Description

Samples points uniformly on curves interpolated as linear consequent segments.

### Usage

sample.curves(curves, ptsPerCurve = as.integer(c(500)))


### Arguments

 curves A list where each element is a function being a list containing a matrix coords (curves' values, d columns). ptsPerCurve A vector of numbers of points to be sampled on each curve. If length(ptsPerCurve) < length(curves) then the first entry of ptsPerCurve is considered only, and corresponds to the number of points on a curve.

### Value

A list of curves with each entry being a list constiting of [] the drawn curve being a matrix named coords, [] length of the curve as in curves named length.init, and [] length of the drawn curve named length.

### References

Lafaye De Micheaux, P., Mozharovskyi, P. and Vimond, M. (2018). Depth for curve data and applications.

### 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 DD-plot
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("DD-plot 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[]$hyperplane[2:3]
pts <- matrix(c(0, 0, 1, ddnormal / -ddnormal),
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)


[Package curveDepth version 0.1.0.9 Index]