localdepth {localdepth} | R Documentation |
The function evaluates the depth and the local depth for a set of points with respect to a dataset.
localdepth(x, y = NULL, tau, use = c("volume", "diameter"), method = c("simplicial", "ellipsoid", "halfspace", "mahalanobis"), type = c("exact", "approx"), nsamp = "all", nmax = 1, tol=10^(-9), dimension=NULL, location=NULL, covariance=NULL)
x |
numeric; vector, dataframe or matrix. If x is a circular vector, a circular version is used. Avoid ties by wiggling the data. The function only issues a warning for ties |
y |
numeric; vector, dataframe or matrix with the same number of columns as x , or NULL . If NULL , x is used |
tau |
numeric; threshold value for the evaluation of the local depth. Use function quantile.localdepth to evaluate tau using a quantile of the size of the objects |
use |
character; the statistic used to measure the size of the objects. Currently, for method equal to "simplicial" or "ellipsoid" allowed statistics are "volume" and "diameter" . For method equal to "mahalanobis" this parameter is not used and the only available statistic is pairwise Mahalanobis' distance |
method |
character; the type of (local) depth to be evaluated |
type |
character; how to evaluate membership. Only active for method="simplicial" . See details. |
nsamp |
character or numeric; the number of objects that are considered. If "all" , the size of all choose(NROW(x), NCOL(x)+1) objects is evaluated. Otherwise, a simple random sample with replacement of size nsamp is performed from the set of all possible objects. |
nmax |
numeric; maximum fraction (in the range (0,1]) of objects to be considered when nsamp is not equal to all . If nmax=1 the number of searched objects can reach the number of possible objects (choose(NROW(x), NCOL(x)+1) for simplicial and ellipsoid depth) |
tol |
numeric; tolerance parameter to be fixed depending on the machine precision. Used to decide membership of points located near to the boundary of the objects |
dimension |
numeric; only used with method="ellipsoid" . It is the squared length of the ellipsoid semimajor axis. If dimension is NULL , it is set to NCOL(x) |
location |
NULL or a numeric vector; the NCOL(x) means vector used in method equal to "mahalanobis" . If NULL , apply(x, 2, mean) is used |
covariance |
NULL or a numeric matrix; the NCOL(x)*NCOL(x) covariance matrix used in method equal to "mahalanobis" . If NULL , cov(x) is used |
With method="simplicial"
and type="exact"
, membership of the points in simplices is evaluated; when type="approx"
, an approximate membership function is used. See references below.
The function returns an object of class
localdepth
with the following components:
localdepth |
vector of the local depth values for the given tau |
depth |
vector of the depth values |
max.localdepth |
max(localdepth) |
max.depth |
max(depth) |
num |
vector with two components. num[1] gives the number of objects used for the evaluation of the depth; num[2] is the number of objects used for the evaluation of the local depth |
call |
match.call() result. Note that this is called from the internal function |
tau |
value of the corresponding input parameter |
use |
value of the corresponding input parameter |
tol |
value of the corresponding input parameter |
x |
value of the corresponding input parameter |
y |
value of the corresponding input parameter |
type |
value of the corresponding input parameter |
nsamp |
value of the corresponding input parameter |
method |
value of the corresponding input parameter |
Claudio Agostinelli and Mario Romanazzi
C. Agostinelli and M. Romanazzi (2007). Local depth of univariate distributions. Working paper n. 1/2007, Dipartimento di Statistica, Universita' Ca' Foscari, Venezia.
C. Agostinelli and M. Romanazzi (2008). Local depth of multidimensional data. Working paper n. 3/2008, Dipartimento di Statistica, Universita' Ca' Foscari, Venezia.
quantile.localdepth
, plot.localdepth
# Iris Setosa dataset data(iris) setosa <- iris[iris$Species=="setosa",-5] str(setosa) n <- dim(setosa)[1];p <- dim(setosa)[2] lab <- paste("U",1:n,sep="") pairs(setosa) # Wiggling data with gaussian error set.seed(1234) err <- matrix(c(rnorm(n,0,sd(setosa[,1])/1000),rnorm(n,0,sd(setosa[,2])/1000), rnorm(n,0,sd(setosa[,3])/1000),rnorm(n,0,sd(setosa[,4])/1000)),n,p,byrow=FALSE) setosa1 <- setosa + as.data.frame(err) ## Not run: ## The following two lines may not run in your computer since all sizes are reported qd <- quantile.localdepth(setosa1, probs=c(seq(0.01,0.09,0.01),seq(0.1,0.9,0.1)), use="diameter", method="simplicial", nsamp="all", size=TRUE) qv <- quantile.localdepth(setosa1, probs=c(seq(0.01,0.09,0.01),seq(0.1,0.9,0.1)), use="volume", method="simplicial", nsamp="all",size=TRUE) ## End(Not run) ## Here we explore 10 qd <- quantile.localdepth(setosa1, probs=c(seq(0.01,0.09,0.01),seq(0.1,0.9,0.1)), use="diameter", method="simplicial", nsamp=211876, size=TRUE) qv <- quantile.localdepth(setosa1, probs=c(seq(0.01,0.09,0.01),seq(0.1,0.9,0.1)), use="volume", method="simplicial", nsamp=211876,size=TRUE) c(mean(qd$stats),median(qd$stats)) c(mean(qv$stats),median(qv$stats)) round(qd$quantile,2) round(qv$quantile,8) boxplot(qd$stats,names="Diameter",xlab="Simplex Size", horizontal=TRUE,main="Iris Setosa") boxplot(qv$stats,names="Volume",xlab="Simplex Size", horizontal=TRUE,main="Iris Setosa") plot(qd$stats,qv$stats,xlab="Simplex Diameter",ylab="Simplex Volume", main="Iris Setosa",pch=20) # Simplicial global/local depth sldv10 <- localdepth(setosa1,tau=qv$quantile[10],use="volume", method="simplicial", type="exact", nsamp="all") # requires a few minutes str(sldv10) sd10 <- sldv10$depth # simplicial depth sld10 <- sldv10$localdepth # simplicial local depth (volume, 10 lab[sd10 == (p+1)/n] # convex hull vertices (25 points out of 50) sdmax <- max(sd10);imax <- which.max(sd10);setosa[imax,] # deepest point # DD-Plot plot(sldv10, xlab="Simplicial Depth", ylab="Local Simplicial Depth", main="Iris Setosa",pch=20,ylim=c(0,1.02)) abline(a=0,b=1,lty="dashed") # Mahalanobis Depth of Iris Versicolor wrt Iris Setosa iversicolor <- iris[iris$Species == "versicolor",-5] str(iversicolor) set.seed(2345) err <- matrix(c(rnorm(n,0,sd(iversicolor[,1])/1000),rnorm(n,0,sd(iversicolor[,2])/1000), rnorm(n,0,sd(iversicolor[,3])/1000),rnorm(n,0,sd(iversicolor[,4])/1000)), n,p,byrow=FALSE) iversicolor1 <- iversicolor + as.data.frame(err) qm <- quantile.localdepth(setosa1, probs=c(seq(0.01,0.09,0.01),seq(0.1,0.9,0.1)), method="mahalanobis",nsamp="all",size=TRUE) round(qm$quantile,2) vers <- localdepth(x=setosa1, y=iversicolor1, tau=qm$quantile[10], method="mahalanobis", nsamp="all") str(vers) round(vers$depth,6) round(vers$localdepth,6) # identically zero