NAG FL Interface
g03ecf (cluster_​hier)

Settings help

FL Name Style:


FL Specification Language:


1 Purpose

g03ecf performs hierarchical cluster analysis.

2 Specification

Fortran Interface
Subroutine g03ecf ( method, n, d, ilc, iuc, cd, iord, dord, iwk, ifail)
Integer, Intent (In) :: method, n
Integer, Intent (Inout) :: ifail
Integer, Intent (Out) :: ilc(n-1), iuc(n-1), iord(n), iwk(2*n)
Real (Kind=nag_wp), Intent (Inout) :: d(n*(n-1)/2)
Real (Kind=nag_wp), Intent (Out) :: cd(n-1), dord(n)
C Header Interface
#include <nag.h>
void  g03ecf_ (const Integer *method, const Integer *n, double d[], Integer ilc[], Integer iuc[], double cd[], Integer iord[], double dord[], Integer iwk[], Integer *ifail)
The routine may be called by the names g03ecf or nagf_mv_cluster_hier.

3 Description

Given a distance or dissimilarity matrix for n objects (see g03eaf), cluster analysis aims to group the n objects into a number of more or less homogeneous groups or clusters. With agglomerative clustering methods, a hierarchical tree is produced by starting with n clusters, each with a single object and then at each of n-1 stages, merging two clusters to form a larger cluster, until all objects are in a single cluster. This process may be represented by a dendrogram (see g03ehf).
At each stage, the clusters that are nearest are merged, methods differ as to how the distances between the new cluster and other clusters are computed. For three clusters i, j and k let ni, nj and nk be the number of objects in each cluster and let dij, dik and djk be the distances between the clusters. Let clusters j and k be merged to give cluster jk, then the distance from cluster i to cluster jk, di.jk can be computed in the following ways.
  1. 1.Single link or nearest neighbour : di.jk = min(dij,dik) .
  2. 2.Complete link or furthest neighbour : di.jk=max(dij,dik).
  3. 3.Group average : di.jk= njnj+nk dij+ nknj+nk dik.
  4. 4.Centroid : di.jk= njnj+nk dij+ nknj+nk dik- njnk (nj+nk) 2djk.
  5. 5.Median : di.jk=12dij+12dik-14djk.
  6. 6.Minimum variance : di.jk={(ni+nj)dij+(ni+nk)dik-nidjk}/(ni+nj+nk).
For further details see Everitt (1974) or Krzanowski (1990).
If the clusters are numbered 1,2,,n then, for convenience, if clusters j and k, j<k, merge then the new cluster will be referred to as cluster j. Information on the clustering history is given by the values of j, k and djk for each of the n-1 clustering steps. In order to produce a dendrogram, the ordering of the objects such that the clusters that merge are adjacent is required. This ordering is computed so that the first element is 1. The associated distances with this ordering are also computed.

4 References

Everitt B S (1974) Cluster Analysis Heinemann
Krzanowski W J (1990) Principles of Multivariate Analysis Oxford University Press

5 Arguments

1: method Integer Input
On entry: indicates which clustering method is used.
method=1
Single link.
method=2
Complete link.
method=3
Group average.
method=4
Centroid.
method=5
Median.
method=6
Minimum variance.
Constraint: method=1, 2, 3, 4, 5 or 6.
2: n Integer Input
On entry: n, the number of objects.
Constraint: n2.
3: d(n×(n-1)/2) Real (Kind=nag_wp) array Input/Output
On entry: the strictly lower triangle of the distance matrix. D must be stored packed by rows, i.e., d( (i-1) (i-2) /2+j ) , i>j must contain dij.
On exit: is overwritten.
Constraint: d(i)0.0, for i=1,2,,n(n-1)/2.
4: ilc(n-1) Integer array Output
On exit: ilc(l) contains the number, j, of the cluster merged with cluster k (see iuc), j<k, at step l, for l=1,2,,n-1.
5: iuc(n-1) Integer array Output
On exit: iuc(l) contains the number, k, of the cluster merged with cluster j, j<k, at step l, for l=1,2,,n-1.
6: cd(n-1) Real (Kind=nag_wp) array Output
On exit: cd(l) contains the distance djk, between clusters j and k, j<k, merged at step l, for l=1,2,,n-1.
7: iord(n) Integer array Output
On exit: the objects in dendrogram order.
8: dord(n) Real (Kind=nag_wp) array Output
On exit: the clustering distances corresponding to the order in iord. dord(l) contains the distance at which cluster iord(l) and iord(l+1) merge, for l=1,2,,n-1. dord(n) contains the maximum distance.
9: iwk(2×n) Integer array Workspace
10: ifail Integer Input/Output
On entry: ifail must be set to 0, −1 or 1 to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of 0 causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of −1 means that an error message is printed while a value of 1 means that it is not.
If halting is not appropriate, the value −1 or 1 is recommended. If message printing is undesirable, then the value 1 is recommended. Otherwise, the value 0 is recommended. When the value -1 or 1 is used it is essential to test the value of ifail on exit.
On exit: ifail=0 unless the routine detects an error or a warning has been flagged (see Section 6).

6 Error Indicators and Warnings

If on entry ifail=0 or −1, explanatory error messages are output on the current error message unit (as defined by x04aaf).
Errors or warnings detected by the routine:
ifail=1
On entry, method=value.
Constraint: method=1, 2, 3, 4, 5 or 6.
On entry, n=value.
Constraint: n2.
ifail=2
On entry, at least one element of d is negative.
ifail=3
A true dendrogram cannot be formed because the distances at which clusters have merged are not increasing for all steps, i.e., cd(l)<cd(l-1) for some l=2,3,,n-1. This can occur for the median and centroid methods.
ifail=-99
An unexpected error has been triggered by this routine. Please contact NAG.
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
ifail=-399
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
ifail=-999
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

7 Accuracy

For method3 slight rounding errors may occur in the calculations of the updated distances. These would not normally significantly affect the results, however there may be an effect if distances are (almost) equal.
If at a stage, two distances dij and dkl, (i<k) or (i=k), and j<l, are equal then clusters k and l will be merged rather than clusters i and j. For single link clustering this choice will only affect the order of the objects in the dendrogram. However, for other methods the choice of kl rather than ij may affect the shape of the dendrogram. If either of the distances dij and dkl is affected by rounding errors then their equality, and hence the dendrogram, may be affected.

8 Parallelism and Performance

Background information to multithreading can be found in the Multithreading documentation.
g03ecf is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this routine. Please also consult the Users' Note for your implementation for any additional implementation-specific information.

9 Further Comments

The dendrogram may be formed using g03ehf. Groupings based on the clusters formed at a given distance can be computed using g03ejf.

10 Example

Data consisting of three variables on five objects are read in. Euclidean squared distances based on two variables are computed using g03eaf, the objects are clustered using g03ecf and the dendrogram computed using g03ehf. The dendrogram is then printed.

10.1 Program Text

Program Text (g03ecfe.f90)

10.2 Program Data

Program Data (g03ecfe.d)

10.3 Program Results

Program Results (g03ecfe.r)