fdisp: Functional Dispersion


fdisp measures the functional dispersion (FDis) of a set of communities, as described by Laliberté and Legendre (2010).


fdisp(d, a, tol = 1e-07)



a species-by- species distance matrix computed from functional traits, such as that returned by dist or gowdis. NAs are not allowed.


matrix containing the abundances of the species in d (or presence-absence, i.e. 0 or 1). Rows are sites and species are columns. Can be missing, in which case fdisp assumes that there is only one community with equal abundances of all species. NAs will be replaced by 0. The number of species (columns) in a must match the number of species in d. In addition, the species labels in a and d must be identical and in the same order.


tolerance threshold to test whether the distance matrix is Euclidean : an eigenvalue is considered positive if it is larger than -tol*lambda1, where lambda1 is the largest eigenvalue.


fdisp computes, for a set of communities, the average distance of individual objects (species) in PCoA space from any distance or dissimilarity measure, as described by Anderson (2006). The average distance to the centroid is a measure of multivariate dispersion and as been suggested as an index of beta diversity (Anderson et al. 2006). However, in fdisp both the centroid and the average distance to this centroid can be weighted by individual objects. In other words, fdisp returns the weighted average distance to the weighted centroid. This was suggested so that multivariate dispersion could be used as a multidimensional functional diversity (FD) index that can be weighted by species abundances. This FD index has been called functional dispersion (FDis) and is described by Laliberté and Legendre (2010).

In sum, FDis can account for relative abundances by shifting the position of the centroid towards the most abundant species, and then computing a weighted average distance to this new centroid, using again the relative abundances as weights (Laliberté and Legendre 2010). FDis has no upper limit and requires at least two species to be computed. For communities composed of only one species, dbFD returns a FDis value of 0. FDis is by construction unaffected by species richness, it can be computed from any distance or dissimilarity measure (Anderson et al. 2006), it can handle any number and type of traits (including more traits than species), and it is not strongly influenced by outliers.

FDis is conceptually similar to Rao's quadratic entropy Q (Botta-Dukát 2005), and simulations (via simul.dbFD) have shown high positive correlations between the two indices (Laliberté and Legendre 2010). Still, one potential advantage of FDis over Rao's Q is that in the unweighted case (i.e. with presence-absence data), it opens possibilities for formal statistical tests for differences in FD between two or more communities through a distance-based test for homogeneity of multivariate dispersions (Anderson 2006); see betadisper for more details.

Corrections for PCoA axes corresponding to negative eigenvalues are applied following Anderson (2006); see also betadisper for more details on these corrections.



vector listing the FDis of each community


vector listing the eigenvalues of the PCoA


matrix containing the PCoA axes


fdisp is implemented in dbFD and is used to compute the functional dispersion (FDis) index.


Etienne Laliberté etiennelaliberte@gmail.com http://www.elaliberte.info


Anderson, M. J. (2006) Distance-based tests for homogeneity of multivariate dispersions. Biometrics 62:245-253.

Anderson, M. J., K. E. Ellingsen and B. H. McArdle (2006) Multivariate dispersion as a measure of beta diversity. Ecology Letters 9:683-693.

Botta-Dukát, Z. (2005) Rao's quadratic entropy as a measure of functional diversity based on multiple traits. Journal of Vegetation Science 16:533-540.

Laliberté, E. and P. Legendre (2010) A distance-based framework for measuring functional diversity from multiple traits. Ecology 91299:305.

See Also

dbFD for computing multidimensional FD indices and betadisper from which fdisp borrows some code.


# dummy dataset
dummy.dist <- gowdis(dummy$trait)
ex1 <- fdisp(dummy.dist, dummy$abun)

# example with real data from New Zealand short-tussock grasslands
ex2 <- fdisp(gowdis(tussock$trait), tussock$abun)

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.