Halfspace depth#

DepthEucl.halfspace(x: ndarray | None = None, exact: bool = True, method: str = 'recursive', solver: str = 'neldermead', NRandom: int = 1000, n_refinements: int = 10, sphcap_shrink: float = 0.5, alpha_Dirichlet: float = 1.25, cooling_factor: float = 0.95, cap_size: int = 1, start: str = 'mean', space: str = 'sphere', line_solver: str = 'goldensection', bound_gc: bool = True, CUDA: bool = False, output_option: Literal['lowest_depth', 'final_depht_dir', 'all_depth', 'all_depth_directions'] = 'final_depht_dir', evaluate_dataset: bool = False) ndarray[source]

Calculates the exact and approximated Tukey (=halfspace, location) depth (Tukey, 1975) of points w.r.t. a multivariate data set.

Arguments
x: array-like or None, default=None

Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a d-variate point. Should have the same dimension as data.

exactbool, default=False

The type of the used method. The default is exact=False, which leads to approx- imate computation of the Tukey depth. If exact=True, the Tukey depth is computed exactly, with method='recursive' by default.

method: str, default=’recursive’

For exact=True, the Tukey depth is calculated as the minimum over all combinations of k points from data (see Details below). In this case parameter method specifies k, with possible values 1 for method='recursive' (by default), d−2 for method='plane', d−1 for 'method=line'. The name of the method may be given as well as just parameter exact, in which case the default method will be used.

solverstr {'simplegrid', 'refinedgrid', 'simplerandom', 'refinedrandom', 'coordinatedescent', 'randomsimplices', 'neldermead', 'simulatedannealing'}, default=”neldermead”

The type of solver used to approximate the depth.

NRandomint, default=1000

The total number of iterations to compute the depth. Some solvers are converging faster so they are run several time to achieve NRandom iterations.

n_refinementsint, default = 10

Set the maximum of iteration for computing the depth of one point. For solver='refinedrandom' or 'refinedgrid'.

sphcap_shrinkfloat, default = 0.5

It’s the shrinking of the spherical cap. For solver='refinedrandom' or 'refinedgrid'.

alpha_Dirichletfloat, default = 1.25

It’s the parameter of the Dirichlet distribution. For solver='randomsimplices'.

cooling_factorfloat, default = 0.95

It’s the cooling factor. For solver='simulatedannealing'.

cap_sizeint | float, default = 1

It’s the size of the spherical cap. For solver='simulatedannealing' or 'neldermead'.

startstr {‘mean’, ‘random’}, default = mean

For solver='simulatedannealing' or 'neldermead', it’s the method used to compute the first depth.

spacestr {‘sphere’, ‘euclidean’}, default = ‘sphere’

For solver='coordinatedescent' or 'neldermead', it’s the type of spacecin which the solver is running.

line_solverstr {‘uniform’, ‘goldensection’}, default = goldensection

For solver='coordinatedescent', it’s the line searh strategy used by this solver.

bound_gcbool, default = True

For solver='neldermead', it’s True if the search is limited to the closed hemisphere.

CUDAbool, default=False

Determines if approximate computation will be performed in GPU. avaiable only for simplerandom or refinedrandom

output_optionstr {“lowest_depth”,”final_depht_dir”,”all_depth”,”all_depth_directions}, default = final_depht_dir

Determines what will be computated alongside with the final depth | If output_option=lowest_depth, only approximated depths are returned. | If output_option=final_depht_dir, best directions to approximate depths are also returned. | If output_option=all_depth, depths calculated at every iteration are also returned. | If output_option=all_depth_directions, random directions used to project depths are also returned with indices of converging for the solver selected.

evaluate_datasetbool, default=False

Determines if dataset loaded will be evaluated. Automatically sets x to dataset

References
  • Tukey, J. W. (1975). Mathematics and the picturing of data. In R. James (Ed.), Proceedings of the International Congress of Mathematicians, Volume 2, Canadian Mathematical Congress, 523–531.

  • Donoho, D. L. and M. Gasko (1992). Breakdown properties of location estimates based on halfspace depth and projected outlyingness. The Annals of Statistics, 20(4), 1803–1827.

  • Dyckerhoff, R. and Mozharovskyi, P. (2016): Exact computation of the halfspace depth. Computational Statistics and Data Analysis, 98, 19–30.

  • Dyckerhoff, R., Mozharovskyi, P., and Nagy, S. (2021). Approximate computation of projection depths. Computational Statistics and Data Analysis, 157, 107166.

Examples
>>> import numpy as np
>>> from depth.model import DepthEucl
>>> mat1=[[1, 0, 0],[0, 2, 0],[0, 0, 1]]
>>> mat2=[[1, 0, 0],[0, 1, 0],[0, 0, 1]]
>>> x = np.random.multivariate_normal([1,1,1], mat2, 10)
>>> data = np.random.multivariate_normal([0,0,0], mat1, 200)
>>> model=DepthEucl().load_dataset(data)
>>> model.halfspace(x,)
[0.    0.005 0.005 0.    0.04  0.01  0.    0.    0.04  0.01 ]
>>> model.halfspace(x, exact=True)
[0.    0.005 0.005 0.    0.04  0.01  0.    0.    0.04  0.01 ]