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)=nixip(xi)

¿Qué era E(X)?

Sea:

I(X)=logp(x)=log1p(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 {xi}S1 asociados a frecuencias relativas, proporciones o probabilidades {p(xi)}S1, tales que Sip(xi)=1, ¿qué obtenemos al calcular Sixip(xi)?. ¿ Y Silogp(xi)p(xi)? ¿Qué falta para que sea un valor positivo?

Índice Shannon - Weaver

H=Silogp(xi)p(xi)=Silog(1p(xi))p(xi)

¿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(AB)=P(A)P(B)

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

P(AA)=P(A)P(A)=P(A)2 ¿Qué implica un valor de P(A)2 alto? ¿y su complemento?

Índice de Simpson

D=1S1p(xi)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

Na=eHa donde

Ha=11aSi=1p(xi)a

Si a=2, N2=elogSi=1p(xi)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