Compute the (adjusted) Rand, Jaccard and Fowlkes-Mallows index for agreement of two partitions.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
comPart(x, y, type=c("ARI","RI","J","FM")) ## S4 method for signature 'flexclust,flexclust' comPart(x, y, type) ## S4 method for signature 'numeric,numeric' comPart(x, y, type) ## S4 method for signature 'flexclust,numeric' comPart(x, y, type) ## S4 method for signature 'numeric,flexclust' comPart(x, y, type) randIndex(x, y, correct=TRUE, original=!correct) ## S4 method for signature 'table,missing' randIndex(x, y, correct=TRUE, original=!correct) ## S4 method for signature 'ANY,ANY' randIndex(x, y, correct=TRUE, original=!correct)
Either a 2-dimensional cross-tabulation of cluster
An object inheriting from class
character vector of abbreviations of indices to compute.
Logical, correct the Rand index for agreement by chance?
A vector of indices.
Let A denote the number of all pairs of data points which are either put into the same cluster by both partitions or put into different clusters by both partitions. Conversely, let D denote the number of all pairs of data points that are put into one cluster in one partition, but into different clusters by the other partition. The partitions disagree for all pairs D and agree for all pairs A. We can measure the agreement by the Rand index A/(A+D) which is invariant with respect to permutations of cluster labels.
The index has to be corrected for agreement by chance if the sizes of the clusters are not uniform (which is usually the case), or if there are many clusters, see Hubert \& Arabie (1985) for details.
If the number of clusters is very large, then usually the vast majority of pairs of points will not be in the same cluster. The Jaccard index tries to account for this by using only pairs of points that are in the same cluster in the defintion of A.
Let A again be the pairs of points that are in the same cluster in both partitions. Fowlkes-Mallows divides this number by the geometric mean of the sums of the number of pairs in each cluster of the two partitions. This gives the probability that a pair of points which are in the same cluster in one partition are also in the same cluster in the other partition.
Lawrence Hubert and Phipps Arabie. Comparing partitions. Journal of Classification, 2, 193–218, 1985.
Marina Meila. Comparing clusterings - an axiomatic view. In Stefan Wrobel and Luc De Raedt, editors, Proceedings of the International Machine Learning Conference (ICML). ACM Press, 2005.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
## no class correlations: corrected Rand almost zero g1 <- sample(1:5, size=1000, replace=TRUE) g2 <- sample(1:5, size=1000, replace=TRUE) tab <- table(g1, g2) randIndex(tab) ## uncorrected version will be large, because there are many points ## which are assigned to different clusters in both cases randIndex(tab, correct=FALSE) comPart(g1, g2) ## let pairs (g1=1,g2=1) and (g1=3,g2=3) agree better k <- sample(1:1000, size=200) g1[k] <- 1 g2[k] <- 1 k <- sample(1:1000, size=200) g1[k] <- 3 g2[k] <- 3 tab <- table(g1, g2) ## the index should be larger than before randIndex(tab, correct=TRUE, original=TRUE) comPart(g1, g2)
Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.