4 ÍNDICES DE DIVERSIDAD

Juan Manuel Solís 3

4.0.1 Índices de Diversidad

4.0.1.1 Índice de Shannon

Intuición

Recordar:

\[E(X) = \sum_i^n x_i \cdot p(x_i)\]

¿Qué era E(X)?

Sea:

\[I(X) = -log\:p(x)=log\frac{1}{p(x)}\]

la llamada autoinformación o “sorpresa”, donde la base de la función log especifica la base numérica de la representación de la información.

¿Qué valores de \(I(X)\) se obtiene con los valores P(X)={0,1 , 0,5 , 0,9}? ¿Qué implica que algunos I(X) sean mayores que otros?

Si ahora tenemos una serie de valores \(\{x_i\}_1^S\) asociados a frecuencias relativas, proporciones o probabilidades \(\{p(x_i)\}_1^S\), tales que \(\sum_i^Sp(x_i)=1\), ¿qué obtenemos al calcular \(\sum_i^Sx_i\cdot p(x_i)\)?. ¿ Y \(\sum_i^Slog\:p(x_i)\cdot p(x_i)\)? ¿Qué falta para que sea un valor positivo?

Índice Shannon - Weaver

\[H = -\sum_i^Slog\:p(x_i)\cdot p(x_i)=\sum_i^Slog\left(\frac{1}{p(x_i)}\right)\cdot p(x_i)\]

¿Cuál es el máximo valor que puede tomar H?

Ejemplo

Vamos a utilizar el set de datos “datos1.csv”, que contiene valores simulados de recuentos de 11 especies de macrovertebrados acuáticos en 4 sitios. La importación en R se realiza por medio de la función read.csv(), que permite leer archivos planos separados por coma.

#datos1 = read.csv(file.choose(),header = TRUE)

A continuación, realizamos los cálculos para estimar H.

  1. Sumatoria de frecuencias por especie
(total =  apply(X = datos1, MARGIN = 1, FUN = sum))
## [1] 856 230 234 622
  1. Convertir frecuencias observadas en frecuencias relativas.
round((x = sweep(datos1, MARGIN = 1, total, FUN = "/")),2)
##    sp1  sp2  sp3 sp4  sp5  sp6  sp7  sp8  sp9 sp10 sp11
## 1 0.17 0.07 0.02 0.1 0.01 0.02 0.01 0.03 0.02 0.54 0.02
## 2 0.21 0.24 0.25 0.0 0.00 0.00 0.01 0.00 0.00 0.27 0.01
## 3 0.21 0.24 0.25 0.0 0.00 0.00 0.01 0.00 0.00 0.27 0.01
## 4 0.17 0.07 0.02 0.1 0.01 0.02 0.01 0.03 0.02 0.54 0.02
  1. Shannon
# I(X) . p(X)
(x = -x * log(x))
##         sp1       sp2        sp3       sp4        sp5        sp6        sp7
## 1 0.3016646 0.1882304 0.07438657 0.2323756 0.03930435 0.06727218 0.04789184
## 2 0.3270007 0.3439685 0.34740394       NaN 0.02364382        NaN 0.05660174
## 3 0.3273997 0.3440145 0.34738990       NaN 0.02331334        NaN 0.05585524
## 4 0.3015548 0.1873714 0.07135931 0.2319256 0.03877413 0.06640442 0.04477023
##         sp8        sp9      sp10       sp11
## 1 0.1061314 0.06727218 0.3341800 0.07783174
## 2       NaN        NaN 0.3533852 0.04126028
## 3       NaN        NaN 0.3532810 0.04070234
## 4 0.1065619 0.06640442 0.3332817 0.08084225
# H
(H = apply(x, MARGIN = 1, sum, na.rm = TRUE))
## [1] 1.536541 1.493264 1.491956 1.529250

Librería {vegan}

Para calcular la diversidad con funciones especializadas de R, vamos a necesitar la librería {vegan}. Procedemos a instalarla (ésto se realiza sólo una vez):

#install.packages("vegan")

El cálculo de H se realiza de la siguiente manera:

library("vegan")
diversity(datos1)
## [1] 1.536541 1.493264 1.491956 1.529250

4.0.1.2 Índice de Simpson

Intuición

Si A y B son eventos independientes, se cumple que

\[P(A\cap B) = P(A)\cdot P(B)\]

Si \(A=B\) (por ejemplo, en el evento de hallar dos veces la misma especie en dos selecciones sucesivas al azar)

\[P(A\cap A)=P(A)\cdot P(A)=P(A)^2\] ¿Qué implica un valor de \(P(A)^2\) alto? ¿y su complemento?

Índice de Simpson

\[D = 1 - \sum_1^Sp(x_i)^2\]

Ejemplo

Realicemos el cálculo de D con R.

round((x = sweep(datos1, MARGIN = 1, total, FUN = "/")),2)
##    sp1  sp2  sp3 sp4  sp5  sp6  sp7  sp8  sp9 sp10 sp11
## 1 0.17 0.07 0.02 0.1 0.01 0.02 0.01 0.03 0.02 0.54 0.02
## 2 0.21 0.24 0.25 0.0 0.00 0.00 0.01 0.00 0.00 0.27 0.01
## 3 0.21 0.24 0.25 0.0 0.00 0.00 0.01 0.00 0.00 0.27 0.01
## 4 0.17 0.07 0.02 0.1 0.01 0.02 0.01 0.03 0.02 0.54 0.02
(D = 1 - apply(x^2,1,sum,na.rm = TRUE))
## [1] 0.6655958 0.7606427 0.7605011 0.6632634

Librería {vegan}

(D = diversity(datos1, index = "simpson"))
## [1] 0.6655958 0.7606427 0.7605011 0.6632634

4.0.1.3 Números de Hill

Sea

\[N_a=e^{H_a}\] donde

\[H_a=\frac{1}{1-a}\sum_{i=1}^Sp(x_i)^a\]

Si \(a=2\), \(N_2=e^{^{-log\sum_{i=1}^Sp(x_i)^2}}\)

En R,

## Manual
(N.2 = exp(- log(apply(x^2,1,sum,na.rm = TRUE))))
## [1] 2.990393 4.177855 4.175385 2.969680
## Empleando la función diversity
D = diversity(datos1, index = "simpson")
(N.2=exp(-log((1-D))))
## [1] 2.990393 4.177855 4.175385 2.969680
# ó
diversity(datos1, index = "invsimpson")
## [1] 2.990393 4.177855 4.175385 2.969680