Learn R Programming

fpc (version 1.2-2)

cluster.stats: Cluster validation statistics

Description

Computes a number of distance based statistics which can be used for cluster validation, comparison between clusterings and decision about the number of clusters: cluster sizes, cluster diameters, average distances within and between clusters, cluster separation, average silhouette widths, the best distance based statistics to decide about the number of clusters in a study of Milligan and Cooper (1985), Hubert's gamma coefficient, the Dunn index and the corrected rand index to assess the similarity of two clusterings.

Usage

cluster.stats(d,clustering,alt.clustering=NULL,
                          silhouette=TRUE,G2=FALSE,G3=FALSE)

Arguments

d
a distance object (as generated by dist) or a distance matrix between cases.
clustering
an integer vector of length of the number of cases, which indicates a clustering. The clusters have to be n numbered from 1 to the number of clusters.
alt.clustering
an integer vector such as for clustering, indicating an alternative clustering. If provided, the corrected rand index for clustering vs. alt.clustering is computed.
silhouette
logical. If TRUE, the silhouette statistics are computed, which requires package cluster.
G2
logical. If TRUE, Goodman and Kruskal's index G2 (cf. Gordon (1999), p. 62) is computed. This executes lots of sorting algorithms and can be very slow (it has been improved by R. Francois - thanks!)
G3
logical. If TRUE, the index G3 (cf. Gordon (1999), p. 62) is computed. This executes sort on all distances and can be extremely slow.

Value

  • cluster.stats returns a list containing the components n, cluster.number, cluster.size, diameter, average.distance, median.distance, separation, average.toother, separation.matrix, average.between, average.within, n.between, n.within, clus.avg.silwidths, avg.silwidth, g2, g3, hubertgamma, dunn, wb.ratio, corrected.rand.
  • nnumber of cases.
  • cluster.numbernumber of clusters.
  • cluster.sizevector of cluster sizes (number of points).
  • diametervector of cluster diameters (maximum within cluster distances).
  • average.distancevector of clusterwise within cluster average distances.
  • median.distancevector of clusterwise within cluster distance medians.
  • separationvector of clusterwise minimum distances of a point in the cluster to a point of another cluster.
  • average.toothervector of clusterwise average distances of a point in the cluster to the points of other clusters.
  • separation.matrixmatrix of separation values between all pairs of clusters.
  • average.betweenaverage distance between clusters.
  • average.withinaverage distance within clusters.
  • n.betweennumber of distances between clusters.
  • n.withinnumber of distances within clusters.
  • clus.avg.silwidthsvector of cluster average silhouette widths. See silhouette.
  • avg.silwidthaverage silhouette width. See silhouette.
  • g2Goodman and Kruskal's Gamma coefficient. See Milligan and Cooper (1985), Gordon (1999, p. 62).
  • g3G3 coefficient. See Gordon (1999, p. 62).
  • hubertgammacorrelation between distances and a 0-1-vector where 0 means same cluster, 1 means different clusters. See Haldiki et al. (2002).
  • dunnminimum separation / maximum diameter. Dunn index, see Haldiki et al. (2002).
  • wb.ratioaverage.within/average.between.
  • corrected.randcorrected rand index (if alt.clustering has been specified), see Gordon (1999, p. 198).

References

Gordon, A. D. (1999) Classification, 2nd ed. Chapman and Hall.

Haldiki, M., Batistakis, Y., Vazirgiannis, M. (2002) Cluster validity methods, SIGMOD, Record 31, 40-45. Milligan, G. W. and Cooper, M. C. (1985) An examination of procedures for determining the number of clusters. Psychometrika, 50, 159-179.

See Also

silhouette, dist clusterboot computes clusterwise stability statistics by resampling.

Examples

Run this code
set.seed(20000)
  face <- rFace(200,dMoNo=2,dNoEy=0,p=2)
  dface <- dist(face)
  complete3 <- cutree(hclust(dface),3)
  cluster.stats(dface,complete3,
                alt.clustering=as.integer(attr(face,"grouping")))

Run the code above in your browser using DataLab