# gowdis: Gower Dissimilarity In FD: Measuring Functional Diversity (FD) from Multiple Traits, and Other Tools for Functional Ecology

 gowdis R Documentation

## Gower Dissimilarity

### Description

`gowdis` measures the Gower (1971) dissimilarity for mixed variables, including asymmetric binary variables. Variable weights can be specified. `gowdis` implements Podani's (1999) extension to ordinal variables.

### Usage

```gowdis(x, w, asym.bin = NULL, ord = c("podani", "metric", "classic"))
```

### Arguments

 `x` matrix or data frame containing the variables. Variables can be `numeric`, `ordered`, or `factor`. Symmetric or asymmetric binary variables should be `numeric` and only contain 0 and 1. `character` variables will be converted to `factor`. `NA`s are tolerated. `w` vector listing the weights for the variables in `x`. Can be missing, in which case all variables have equal weights. `asym.bin` vector listing the asymmetric binary variables in `x`. `ord` character string specifying the method to be used for ordinal variables (i.e. `ordered`). `"podani"` refers to Eqs. 2a-b of Podani (1999), while `"metric"` refers to his Eq. 3 (see ‘details’); both options convert ordinal variables to ranks. `"classic"` simply treats ordinal variables as continuous variables. Can be abbreviated.

### Details

`gowdis` computes the Gower (1971) similarity coefficient exactly as described by Podani (1999), then converts it to a dissimilarity coefficient by using D = 1 - S. It integrates variable weights as described by Legendre and Legendre (1998).

Let X = {Xij} be a matrix containing n objects (rows) and m columns (variables). The similarity Gjk between objects j and k is computed as

Gjk = sum(Wijk * Sijk) / sum(Wijk)

,

where Wijk is the weight of variable i for the j-k pair, and Sijk is the partial similarity of variable i for the j-k pair,

and where Wijk = 0 if objects j and k cannot be compared because Xij or Xik is unknown (i.e. `NA`).

For binary variables, Sijk = 0 if Xij is not equal to Xik, and Sijk = 1 if Xij = Xik = 1 or if Xij = Xik = 0.

For asymmetric binary variables, same as above except that Wijk = 0 if Xij = Xik = 0.

For nominal variables, Sijk = 0 if Xij is not equal to Xik and Sijk = 1 if Xij = Xik.

For continuous variables,

Sijk = 1 - [ |Xij - Xik| / (Xi.max - Xi.min) ]

where Xi.max and Xi.min are the maximum and minimum values of variable i, respectively.

For ordinal variables, when `ord = "podani"` or `ord = "metric"`, all Xij are replaced by their ranks Rij determined over all objects (such that ties are also considered), and then

if `ord = "podani"`

Sijk = 1 if Rij = Rik, otherwise

Sijk = 1 - [ |Rij - Rik| - (Tij - 1) / 2 - (Tik - 1) / 2 / Ri.max - Ri.min - (Ti.max - 1) / 2 - (Ti.min - 1) / 2 ]

where Tij is the number of objects which have the same rank score for variable i as object j (including j itself), Tik is the number of objects which have the same rank score for variable i as object k (including k itself), Ri.max and Ri.min are the maximum and minimum ranks for variable i, respectively, Ti.max is the number of objects with the maximum rank, and Ti.min is the number of objects with the minimum rank.

if `ord = "metric"`

Sijk = 1 - [ |Rij - Rik| / (Ri.max - Ri.min) ]

When `ord = "classic"`, ordinal variables are simply treated as continuous variables.

### Value

an object of class `dist` with the following attributes: `Labels`, `Types` (the variable types, where 'C' is continuous/numeric, 'O' is ordinal, 'B' is symmetric binary, 'A' is asymmetric binary, and 'N' is nominal), `Size`, `Metric`.

### Author(s)

Etienne Laliberté etiennelaliberte@gmail.com https://www.elaliberte.info/, with some help from Philippe Casgrain for the C interface.

### References

Gower, J. C. (1971) A general coefficient of similarity and some of its properties. Biometrics 27:857-871.

Legendre, P. and L. Legendre (1998) Numerical Ecology. 2nd English edition. Amsterdam: Elsevier.

Podani, J. (1999) Extending Gower's general coefficient of similarity to ordinal characters. Taxon 48:331-340.

`daisy` is similar but less flexible, since it does not include variable weights and does not treat ordinal variables as described by Podani (1999). Using `ord = "classic"` reproduces the behaviour of `daisy`.

### Examples

```ex1 <- gowdis(dummy\$trait)
ex1

# check attributes
attributes(ex1)

# to include weights
w <- c(4,3,5,1,2,8,3,6)
ex2 <- gowdis(dummy\$trait, w)
ex2

# variable 7 as asymmetric binary
ex3 <- gowdis(dummy\$trait, asym.bin = 7)
ex3

# example with trait data from New Zealand vascular plant species
ex4 <- gowdis(tussock\$trait)
```

FD documentation built on May 2, 2022, 5:08 p.m.