R: Cophenetic Distances for a Hierarchical Clustering

cophenetic {stats} | R Documentation

## Cophenetic Distances for a Hierarchical Clustering

### Description

Computes the cophenetic distances for a hierarchical clustering.

### Usage

    cophenetic(x)
    ## Default S3 method:
    cophenetic(x)
    ## S3 method for class 'dendrogram':
    cophenetic(x)

### Arguments

`x` | an R object representing a hierarchical clustering. For the default method, an object of class `hclust` or with a method for `as.hclust()` such as `agnes`.

### Details

The cophenetic distance between two observations that have been clustered is defined to be the intergroup dissimilarity at which the two observations are first combined into a single cluster. Note that this distance has many ties and restrictions.

It can be argued that a dendrogram is an appropriate summary of some data if the correlation between the original distances and the cophenetic distances is high. Otherwise, it should simply be viewed as the description of the output of the clustering algorithm.

`cophenetic` is a generic function. Support for classes which represent hierarchical clusterings (total indexed hierarchies) can be added by providing an `as.hclust()` or, more directly, a `cophenetic()` method for such a class.

The method for objects of class `"dendrogram"` requires that all leaves of the dendrogram object have non-null labels.

### Value

An object of class `dist`.

### Author(s)

Robert Gentleman

### References

Sneath, P.H.A. and Sokal, R.R. (1973) Numerical Taxonomy: The Principles and Practice of Numerical Classification, p. 278 ff; Freeman, San Francisco.

### See Also

`dist`, `hclust`

### Examples

    require(graphics)

    d1 <- dist(USArrests)
    hc <- hclust(d1, "ave")
    d2 <- cophenetic(hc)
    cor(d1,d2) # 0.7659

    ## Example from Sneath & Sokal, Fig. 5-29, p.279
    d0 <- c(1,3.8,4.4,5.1, 4,4.2,5, 2.6,5.3, 5.4)
    attributes(d0) <- list(Size = 5, diag=TRUE)
    class(d0) <- "dist"
    names(d0) <- letters[1:5]
    d0
    utils::str(upgma <- hclust(d0, method = "average"))
    plot(upgma, hang = -1)
    #
    (d.coph <- cophenetic(upgma))
    cor(d0, d.coph) # 0.9911

[Package stats version 2.6.2 Index]