cluster (version 1.4-1)

ellipsoidhull: Compute the Ellipsoid Hull or Spanning Ellipsoid of a Point Set

Description

Compute the ``ellipsoid hull'' or ``spanning ellipsoid'', i.e. the ellipsoid of minimal volume (`area' in 2D) such that all given points lie just inside or on the boundary of the ellipsoid.

Usage

ellipsoidhull(x, tol=0.01, maxit=5000,
              ret.wt = FALSE, ret.sqdist = FALSE)
## S3 method for class 'ellipsoid':
print(x, digits = NULL, \dots)

Arguments

x
the $n$ $p$-dimensional points asnumeric $n\times p$ matrix.
tol
convergence tolerance for Titterington's algorithm. Setting this to much smaller values may drastically increase the number of iterations needed, and you may want to increas maxit as well.
maxit
integer giving the maximal number of iteration steps for the algorithm.
ret.wt, ret.sqdist
logicals indicating if additional information should be returned, ret.wt specifying the weights and ret.sqdist the squared distances.
digits,...
the usual arguments to print methods.

Value

  • an object of class "ellipsoid", basically a list with several components, comprising at least
  • cov$p\times p$ covariance matrix description the ellipsoid.
  • loc$p$-dimensional location of the ellipsoid center.
  • d2average squared radius.
  • wtthe vector of weights iff ret.wt was true.
  • sqdistthe vector of squared distances iff ret.sqdist was true.

Details

The ``spanning ellipsoid'' algorithm is said to stem from Titterington(1976), in Pison et al(1999) who use it for clusplot.default. The problem can be seen as a special case of the ``Min.Vol.'' ellipsoid of which a more more flexible and general implementation is cov.mve in the lqs package.

References

Pison, G., Struyf, A. and Rousseeuw, P.J. (1999) Displaying a Clustering with CLUSPLOT, Computational Statistics and Data Analysis, 30, 381--392. A version of this is available as technical report from http://win-www.uia.ac.be/u/statis/abstract/Disclu99.htm

D.N. Titterington. (1976) Algorithms for computing {D}-optimal design on finite design spaces. In Proc. of the 1976 Conf. on Information Science and Systems, 213--216; John Hopkins University.

See Also

chull for the convex hull, clusplot which makes use of this; cov.mve.

Examples

Run this code
x <- rnorm(100)
xy <- unname(cbind(x, rnorm(100) + 2*x + 10))
exy <- ellipsoidhull(xy)
exy # >> calling print.ellipsoid()

plot(xy)
lines(predict(exy))
points(rbind(exy$loc), col = "red", cex = 3, pch = 13)

exy <- ellipsoidhull(xy, tol = 1e-7, ret.wt = TRUE, ret.sq = TRUE)
str(exy) # had small `tol', hence many iterations
(ii <- which(zapsmall(exy $ wt) > 1e-6)) # only about 4 to 6 points
round(exy$wt[ii],3); sum(exy$wt[ii]) # sum to 1

Run the code above in your browser using DataLab