gowdis | R Documentation |

`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.

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

`x` |
matrix or data frame containing the variables. Variables can be |

`w` |
vector listing the weights for the variables in |

`asym.bin` |
vector listing the asymmetric binary variables in |

`ord` |
character string specifying the method to be used for ordinal variables (i.e. |

`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.

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`

.

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

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`

.

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)

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.