# Lectura
ambient <- read.csv2("ambientales.csv",enc="latin1",row.names=1)
peces <- read.csv2("peces.csv",enc="latin1",row.names=1)
locs <- read.csv2("localidades.csv",enc="latin1",row.names=1)
nomEspec <- read.csv2("nombresdeespecies.csv",enc="latin1")
nomVarAmbient <- read.csv2("Nombresdevariablesambientales.csv",enc="latin1")
# Adecuación
# Quitar el sitio que no tiene ninguna especie
sumEsp <- apply(peces,1,sum)
peces <- peces[sumEsp!=0,]
ambient <- ambient[sumEsp!=0,]
locs <- locs[sumEsp!=0,]
Una distancia es métrica si:
Una distancias es semimétrica o seudométrica si comple sólo las tres primeras propiedades.
Las distancias no-métricas son las que incumplen la primera condición.
Una distancia se dice que tiene la propiedad euclidiana si está contenida completamente en un espacio euclídeo y que las valores propios de una matriz con esta distancia no produce valores propios negativos.
Un espacio euclídeo es un espacio vectorial que tienen definido un producto interno y el resultado de ese producto interno siempre es un número real positivo.
\[ D_{18}(x_1,x_2) = \sqrt{\sum_{j=1}^p \left(\frac{y_{1j}}{y_{1.}} - \frac{y_{2j}}{y_{2.}}\right)^2} \]
Esta distancia es la distancias entre las proporciones de las especies por sitio.
Donde: \[ \begin{align*} p &: \textrm{Número de especies} \\ x_i &: \textrm{Pefil de especies del sitio } i\\ y_{ij} &: \textrm{Número de individuos en el sitio } i \textrm{ de la especie } j \\ y_{i.} &: \textrm{Suma de los individuos de todas las especies en el sitio } i \\ y_{i.} &= \sum_{j=1}^p y_{ij} \\ \end{align*} \]
En este caso las especies más abundantes contribuyen a la definición de la distancias y es insensible al problema de doble cero, el límite superior es de \(\sqrt{2}\).
require(vegan)
## Loading required package: vegan
## Loading required package: permute
## Loading required package: lattice
## This is vegan 2.5-4
# Transformación de perfiles por sito
peces.perfil <- decostand(peces, method = "total")
# Verificación
apply(peces.perfil, 1, sum)
## 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 27 28 29 30
## 1 1 1 1
# Matriz de distancias entre perfiles
d18 <- dist(peces.perfil, method = "euclidean")
# Cluster utilizando esta distancia entre sitios.
cl18 <- hclust(d18)
# Dendrograma
plot(cl18, hang = -1)
Si ponderamos la distancia con las proporciones entre el inverso de la sumas de especies \(y_{.j}\), se tiene entonces la denominada métrica \(\chi^2\) definida como la distancia \(D_{15}\).
\[ D_{15}(x_1,x_2) = \chi^2 = \sqrt{\sum_{j=1}^p \frac{1}{y_{.j}} \left(\frac{y_{1j}}{y_{1.}} - \frac{y_{2j}}{y_{2.}}\right)^2} \]
En la mayoría de los casos produce distancias menores de uno (1) y el valor máximo posible es \(\sqrt{2}\).
Si realizamos primero en los datos de abundancia originales la transformación:
\[ y'_{ij} = \frac{y_{ij}}{y_{i.}\sqrt{y_{.j}}} \]
Y luego hallamos la distancia euclídea de estos datos transformados entre sitios, es idéntica a la mética \(\chi^2\) (\(D_{15}\)).
require(vegan)
# Transformación de perfiles por sito
peces.perfil <- decostand(peces, method = "total")
# Ajuste por sumas de columnas
peces.chi_met<- t(t(peces.perfil)/sqrt(apply(peces, 2, sum)))
# Matriz de distancias entre perfiles
d15 <- dist(peces.chi_met, method = "euclidean")
# Cluster utilizando esta distancia entre sitios.
cl15 <- hclust(d15)
# Dendrograma
plot(cl15, hang = -1)
Si multiplicamos la transformación, definida anteriormente, por la raiz cuadrada de la abundancia total (), entonces se tiene la distancia \(\chi^2\) (\(D_{16}\)).
Es decir si se realiza la transformación siguiente:
\[ y'_{ij} = \sqrt{y_{..}}\frac{y_{ij}}{y_{i.}\sqrt{y_{.j}}} \]
Y luego se halla la distancia euclídea entre sitios es la denominada distancia \(\chi^2\) (\(D_{16}\)) que es la que en CA y en CCA se preserva.
El valor máximo de \(D_{16}\) es \(\sqrt{2y_{..}}\).
require(vegan)
# Transformación de perfiles por sito
peces.chi_dist <- decostand(peces, method = "chi.square")
# Matriz de distancias entre perfiles
d16 <- dist(peces.chi_dist, method = "euclidean")
# Cluster utilizando esta distancia entre sitios.
cl16 <- hclust(d16)
# Dendrograma
plot(cl16, hang = -1)
Esta distancia se define como:
\[ D_{17} = \sqrt{\sum_{j=1}^p \left(\sqrt{\frac{y_{1j}}{y_{1.}}} - \sqrt{\frac{y_{2j}}{y_{2.}}}\right)^2} \]
Es decir que si primero transformamos las proporciones por filas y se le saca la raiz cuadrada a esas proporciones y hallamos la distancias euclídea, entonces tenemos la distancias de Hellinger (\(D_{17}\)).
Otra forma de ver esta distancia es si se toma la raiz cuadrada de las abundancias absolutas y luego se halla la distancia de Chord (la distancia de cuerda) se tiene de nuevo la distancia de Hellinger (\(D_{17}\)).
Recordemos que la distancia de Chord (la distancia de cuerda) es la distancias entre los vectores unitarios de los renglones (normalizacion) de la matriz de abundancias.
Esta distancias no es sensible al problema de doble cero, su límite superior es \(\sqrt{2}\).
require(vegan)
# Transformación de perfiles por sito
peces.hell <- decostand(peces, method = "hellinger")
# Matriz de distancias entre perfiles
d17 <- dist(peces.hell, method = "euclidean")
# Cluster utilizando esta distancia entre sitios.
cl17 <- hclust(d17)
# Dendrograma
plot(cl17, hang = -1)
Si el número de especies entre dos sitios que no tienen doble cero es \(pp\) en los sitios \(x_1\) y \(x_2\) entonces la distanciss \(D_{19}\) es:
\[ D_{19}(x_1,x_2) = \frac{1}{pp} \sum_{j=1}^p |y_{1j} - y_{2j}| \]
Esta distancia no tiene límite superior.
Ni esta distancia, ni su complemento o su raiz cuadrada son métricos o euclideos. Sin embargo si se aplica a una matriz de presencia ausencia, esta distancia se convierte en el complemento a uno del coeficiente de Jaccard (\(1-S_{7}\)), que es métrico, pero no euclídeo, mientras que la raiz cuadrada es tanto mética como euclídea.
Una propuesta de mejora en matrices de abundancias es la denominada disimilitud de Gower modificada, que es aplicar la misma distancia después de la siguiente transformación:
\[ y'_{ij} = log_{10}(y_{ij}) + 1, \quad \textrm{si} \quad y_{ij} > 0 \\ \quad \textrm{o} \quad \\ y'_{ij} = 0, \quad \textrm{si} \quad y_{ij} = 0 \]
require(vegan)
# Transformación de perfiles por sito
peces.log_gow <- decostand(peces, method = "log", logbase = 10)
# Matriz de distancias entre perfiles
d19 <- dist(peces.log_gow, method = "manhattan")
# Cluster utilizando esta distancia entre sitios.
cl19 <- hclust(d19)
# Dendrograma
plot(cl19, hang = -1)
La similitud \(S_{21}\) se define como el complemento a uno de \(D_{15}\):
\[ S_{21} = 1- D_{15} = 1 - \chi^2 \]
Dado que \(\chi^2\) produce valores menores que 1, entonces \(S_{21}\) producirá valores cercanos a cero o negativos cuando no haya similitud y valores cercanos a uno cuando son parecidos.
Notemos que \(D = 1-S\) de nuevo es la distancias \(D_{15}\) que es mética y euclídea, notemos que también su raiz cuadrada es métrica y euclídea.
Este coeficiente pertenece a un grupo especial que tienen en cuenta la distribución de probabilidad de las características y realza la similitud de las especies raras en comparación con la probabilidad total de que aparezca.
El coeficiente \(S_{22}\) está basado en la probabilidad de los varios estadios del descriptor. Y la similitud resultante es a su vez una probabilidad que refleja el complemento de la probabilidad de que ese ensamble entre dos sitios sea debido al azar.
Se siguen los siguientes pasos:
En este ejemplo se utilizó la distancia parcial por cada especie:
\[ s_{{12}j} = 1 - \left[ \frac{|y_{1j} - y_{2j}|}{R_j} \right] \]
Donde \(R_j\) es el rango de la \(j\)-ésima especie teniendo en cuenta todos los sitios.
Estas dos similitudes cambian si el número de sitios o cambian, situación que no se presenta con las otra medidas de similitud.
Estas dos similitudes son semimétricas y no son euclídeas al realizar la transformación \(D = 1-S\), y se desconoce el comportamiento de sus raices cuadradas.
require(nomclust)
## Loading required package: nomclust
# Matriz de distancias
d22 <-as.dist(good1(peces))
# Cluster utilizando esta distancia entre sitios.
cl22 <- hclust(d22)
# Dendrograma
plot(cl22, hang = -1)
Se parte de la tabla de contingencia \(2 \times 2\)
Se define como un descuento de las presencias cruzadas en relación con la doble presencia.
Se calcula como:
\[ S_{26}(x_1,x_2) = \frac{2a+d}{2p} = \frac{a-b-c}{2p} + \frac{1}{2} \]
El valor de \(S_{26}\) decrece con el incremento de los doble ceros.
Esta similitud es métrica pero no euclídea, sin embargo sus raices cuadradas son tanto métricas como euclídeas.
require(vegan)
D26 <- designdist((peces>0), "1-(a-b-c)/(2*(a+b+c+d))+1/2", abcd = TRUE)
cl26 <- hclust(D26)
plot(cl26, hang = -1)