similarity {bioregion}R Documentation

Compute similarity metrics between sites based on species composition


This function creates a data.frame where each row provides one or several similarity metric(s) between each pair of sites from a co-occurrence matrix with sites as rows and species as columns.


similarity(comat, metric = "Simpson", formula = NULL, method = "prodmat")



a co-occurrence matrix with sites as rows and species as columns.


a vector of string(s) indicating which metrics to chose (see Details). Available options are abc, ABC, Jaccard, Jaccardturn, Sorensen, Simpson, Bray, Brayturn or Euclidean.
If "all" is specified, then all metrics will be calculated. Can be set to NULL if formula is used.


a vector of string(s) with your own formula based on the a, b, c, A, B, and C quantities (see Details). formula is set to NULL by default.


a string indicating what method should be used to compute abc (see Details). method = "prodmat" by default is more efficient but can be greedy in memory and method = "loops" is less efficient but less greedy in memory.


With a the number of species shared by a pair of sites, b species only present in the first site and c species only present in the second site.

\(Jaccard = 1 - (b + c) / (a + b + c)\)

\(Jaccardturn = 1 - 2min(b, c) / (a + 2min(b, c))\) (Baselga 2012)

\(Sorensen = 1 - (b + c) / (2a + b + c)\)

\(Simpson = 1 - min(b, c) / (a + min(b, c))\)

If abundances data are available, Bray-Curtis and its turnover component can also be computed with the following equation:

\(Bray = 1 - (B + C) / (2A + B + C)\)

\(Brayturn = 1 - min(B, C)/(A + min(B, C))\) (Baselga 2013)

with A the sum of the lesser values for common species shared by a pair of sites. B and C are the total number of specimens counted at both sites minus A.

formula can be used to compute customized metrics with the terms a, b, c, A, B, and C. For example formula = c("1 - (b + c) / (a + b + c)", "1 - (B + C) / (2*A + B + C)") will compute the Jaccard and Bray-Curtis similarity metrics, respectively.

Euclidean computes the Euclidean similarity between each pair of site following this equation:

\(Euclidean = 1 / (1 + d_{ij})\)

Where \(d_{ij}\) is the Euclidean distance between site i and site j in terms of species composition.


A data.frame with additional class bioregion.pairwise.metric, providing one or several similarity metric(s) between each pair of sites. The two first columns represent each pair of sites. One column per similarity metric provided in metric and formula except for the metric abc and ABC that are stored in three columns (one for each letter).


Maxime Lenormand (, Pierre Denelle ( and Boris Leroy (


Baselga A (2012). “The Relationship between Species Replacement, Dissimilarity Derived from Nestedness, and Nestedness.” Global Ecology and Biogeography, 21(12), 1223–1232.

Baselga A (2013). “Separating the two components of abundance-based dissimilarity: balanced changes in abundance vs. abundance gradients.” Methods in Ecology and Evolution, 4(6), 552–557.

See Also

dissimilarity dissimilarity_to_similarity similarity_to_dissimilarity


comat <- matrix(sample(0:1000, size = 50, replace = TRUE,
prob = 1 / 1:1001), 5, 10)
rownames(comat) <- paste0("Site", 1:5)
colnames(comat) <- paste0("Species", 1:10)

sim <- similarity(comat, metric = c("abc", "ABC", "Simpson", "Brayturn"))

sim <- similarity(comat, metric = "all",
formula = "1 - (b + c) / (a + b + c)")

[Package bioregion version 1.1.0 Index]