clamtest: Multinomial Species Classification Method (CLAM)

Description Usage Arguments Details Value Note Author(s) References Examples


The CLAM statistical approach for classifying generalists and specialists in two distinct habitats is described in Chazdon et al. (2011).


clamtest(comm, groups, coverage.limit = 10, specialization = 2/3, 
   npoints = 20, alpha = 0.05/20)
## S3 method for class 'clamtest'
summary(object, ...)
## S3 method for class 'clamtest'
plot(x, xlab, ylab, main,  pch = 21:24, col.points = 1:4, 
   col.lines = 2:4, lty = 1:3, position = "bottomright", ...)



Community matrix, consisting of counts.


A vector identifying the two habitats. Must have exactly two unique values or levels. Habitat IDs in the grouping vector must match corresponding rows in the community matrix comm.


Integer, the sample coverage based correction is applied to rare species with counts below this limit. Sample coverage is calculated separately for the two habitats. Sample relative abundances are used for species with higher than or equal to coverage.limit total counts per habitat.


Numeric, specialization threshold value between 0 and 1. The value of 2/3 represents ‘supermajority’ rule, while a value of 1/2 represents a ‘simple majority’ rule to assign shared species as habitat specialists.


Integer, number of points used to determine the boundary lines in the plots.


Numeric, nominal significance level for individual tests. The default value reduces the conventional limit of 0.05 to account for overdispersion and multiple testing for several species simultaneously. However, the is no firm reason for exactly this limit.

x, object

Fitted model object of class "clamtest".

xlab, ylab

Labels for the plot axes.


Main title of the plot.

pch, col.points

Symbols and colors used in plotting species groups.

lty, col.lines

Line types and colors for boundary lines in plot to separate species groups.


Position of figure legend, see legend for specification details. Legend not shown if position = NULL.


Additional arguments passed to methods.


The method uses a multinomial model based on estimated species relative abundance in two habitats (A, B). It minimizes bias due to differences in sampling intensities between two habitat types as well as bias due to insufficient sampling within each habitat. The method permits a robust statistical classification of habitat specialists and generalists, without excluding rare species a priori (Chazdon et al. 2011). Based on a user-defined specialization threshold, the model classifies species into one of four groups: (1) generalists; (2) habitat A specialists; (3) habitat B specialists; and (4) too rare to classify with confidence.


A data frame (with class attribute "clamtest"), with columns:

*A* and *B* are placeholders for habitat names/labels found in the data.

The summary method returns descriptive statistics of the results. The plot method returns values invisibly and produces a bivariate scatterplot of species total abundances in the two habitats. Symbols and boundary lines are shown for species groups.


The code was tested against standalone CLAM software provided on the website of Anne Chao (; minor inconsistencies were found, especially for finding the threshold for 'too rare' species. These inconsistencies are probably due to numerical differences between the two implementation. The current R implementation uses root finding for iso-lines instead of iterative search.

The original method (Chazdon et al. 2011) has two major problems:

  1. It assumes that the error distribution is multinomial. This is a justified choice if individuals are freely distributed, and there is no over-dispersion or clustering of individuals. In most ecological data, the variance is much higher than multinomial assumption, and therefore test statistic are too optimistic.

  2. The original authors suggest that multiple testing adjustment for multiple testing should be based on the number of points (npoints) used to draw the critical lines on the plot, whereas the adjustment should be based on the number of tests (i.e., tested species). The function uses the same numerical values as the original paper, but there is no automatic connection between npoints and alpha arguments, but you must work out the adjustment yourself.


Peter Solymos


Chazdon, R. L., Chao, A., Colwell, R. K., Lin, S.-Y., Norden, N., Letcher, S. G., Clark, D. B., Finegan, B. and Arroyo J. P.(2011). A novel statistical method for classifying habitat generalists and specialists. Ecology 92, 1332–1343.


sol <- with(mite.env, clamtest(mite, Shrub=="None", alpha=0.005))

Example output

Loading required package: permute
Loading required package: lattice
This is vegan 2.4-4
Two Groups Species Classification Method (CLAM)

Specialization threshold = 0.6666667
Alpha level = 0.005

Estimated sample coverage:
1.0000 0.9996 

Minimum abundance for classification:
   27     9 

                 Species Proportion
Generalist            10      0.286
Specialist_FALSE      14      0.400
Specialist_TRUE        4      0.114
Too_rare               7      0.200
  Species Total_FALSE Total_TRUE          Classes
1  Brachy         534         77       Generalist
2    PHTH          89          0 Specialist_FALSE
3    HPAV         389        207       Generalist
4    RARD          85          0 Specialist_FALSE
5    SSTR          22          0         Too_rare
6 Protopl          26          0         Too_rare

vegan documentation built on May 2, 2019, 5:51 p.m.