Skip to contents

Euclidean beta diversity metric.

Usage

euclidean(counts, weighted = TRUE, pairs = NULL, cpus = n_cpus())

Arguments

counts

An OTU abundance matrix where each column is a sample, and each row is an OTU. Any object coercible with as.matrix() can be given here, as well as phyloseq, rbiom, SummarizedExperiment, and TreeSummarizedExperiment objects.

weighted

If TRUE, the algorithm takes relative abundances into account. If FALSE, only presence/absence is considered.

pairs

Which combinations of samples should distances be calculated for? The default value (NULL) calculates all-vs-all. Provide a numeric or logical vector specifying positions in the distance matrix to calculate. See examples.

cpus

How many parallel processing threads should be used. The default, n_cpus(), will use all logical CPU cores.

Value

A dist object.

Calculation

In the formulas below, x and y are two columns (samples) from counts. n is the number of rows (OTUs) in counts.

$$D = \displaystyle \sqrt{\sum_{i = 1}^{n} (x_i - y_i)^{2}}$$

  x <- c(4, 0, 3, 2, 6)
  y <- c(0, 8, 0, 0, 5)
  sqrt(sum((x-y)^2))
  #>  9.69536

References

Legendre P, Caceres M 2013. Beta diversity as the variance of community data: dissimilarity coefficients and partitioning. Ecology Letters. 16(8). doi:10.1111/ele.12141

Examples

    # Example counts matrix
    ex_counts
#>                   Saliva Gums Nose Stool
#> Streptococcus        162  793   22     1
#> Bacteroides            2    4    2   611
#> Corynebacterium        0    0  498     1
#> Haemophilus          180   87    2     1
#> Propionibacterium      1    1  251     0
#> Staphylococcus         0    1  236     1
    
    # Euclidean weighted distance matrix
    euclidean(ex_counts)
#>          Saliva      Gums      Nose
#> Gums   637.8205                    
#> Nose   646.1300  983.5644          
#> Stool  654.8633 1001.5543  858.2296
    
    # Euclidean unweighted distance matrix
    euclidean(ex_counts, weighted = FALSE)
#>         Saliva     Gums     Nose
#> Gums  1.000000                  
#> Nose  1.414214 1.000000         
#> Stool 1.732051 1.414214 1.000000
    
    # Only calculate distances for A vs all.
    euclidean(ex_counts, pairs = 1:3)
#>         Saliva     Gums     Nose
#> Gums  637.8205                  
#> Nose  646.1300       NA         
#> Stool 654.8633       NA       NA