Medidas de diversidad y riqueza

Seminario 1, Ecología II, Grado en Biología

Actualizado el 19/10/2023

Profesor: José Francisco Calvo Sendín
Área de Ecología, Facultad de Biología, Universidad de Murcia
jfcalvo@um.es | https:/webs.um.es/jfcalvo

1. Introducción y objetivos

En este seminario realizaremos ejercicios de cálculo de varios índices de dominancia, diversidad, equitatividad y riqueza, utilizando ejemplos de datos simulados y de datos reales. Aprenderemos también a representar curvas de rango-abundancia, curvas de acumulación de especies, curvas de extrapolación (estimadores de riqueza) y curvas de rarefacción. Finalmente calcularemos diversos índices de diversidad beta para la comparación de comunidades (o de unidades de muestreo).

Para la realización de los ejercicios de este seminario utilizaremos R, un potente software estadístico y gráfico que puede descargarse gratuitamente desde la página https://cran.r-project.org/. A través de la web de la red CRAN (The Comprehensive R Archive Network) puede encontrarse la documentación necesaria para iniciarse y profundizar en el uso de R, así como de sus bibliotecas o paquetes de funciones, creadas por una amplísima comunidad de programadores e investigadores de todos los ámbitos de las ciencias.

2. Desarrollo de la sesión

(A) Preparación

Los datos necesarios para el desarrollo del seminario se encuentran disponibles en el archivo eco2.RData. Una vez iniciado R , cargaremos este archivo desde el servidor de la asignatura:

load( url( "http://webs.um.es/jfcalvo/eco2.RData" ) )

Usando ls() podemos ver los datos y funciones cargados. Utiliza la función info para más información. Por ejemplo: info() o info("div").

Para realizar este seminario se necesita la instalación adicional del paquete de R vegan. Si no lo tenemos instalado ejecutaremos:

install.packages( "vegan" )

Una vez instalado lo cargaremos en memoria:

library( vegan )

(B) Cálculos de índices

Realizaremos el cálculo, paso a paso, de los índices presentados en el Anexo. Recuerda que:

\(S =\) número de especies en la muestra

\(n_i =\) número de individuos de la especie \(i\) en la muestra

\(N\ = \sum n_i =\) número total de individuos

\(p_i =\) proporción de individuos de la especie \(i\).

Utilizaremos en primer lugar los casos sencillos de dos comunidades de ejemplo:

Comenzaremos con la comunidad A. En primer lugar, contaremos el número de especies (4) los que nos permite tener el valor de riqueza \(S =\) 4. A continuación, contaremos el número de individuos de cada especie, que iremos anotando (el orden es irrelevante). Por ejemplo:

c( 2, 19, 2, 1 ) -> n

El siguiente paso es calcular las proporciones:

sum( n ) -> N 
n / N -> p
n; N ;  p

A partir de aquí, el cálculo de los índices es sencillo. El índice de dominancia de Simpson (en sus versiones para una comunidad infinitamente grande y una comunidad finita) se obtiene como:

sum( p ^ 2 ) -> D1
sum( ( n * ( n -1 ) ) / ( N * ( N - 1) ) ) -> D2
D1; D2

El recíproco y el complemento del índice de Simpson (índice de Gini-Simpson) son índices de diversidad, y se calculan como:

1 / D2
1 - D2

Comprobaremos que el índice PIE (probabilidad de encuentro interespecífico) es equivalente al índice de Gini-Simpson:

(N / ( N - 1 ) ) * ( 1 - sum( ( n / N ) ^ 2 ) )

Por su parte, el índice de Shannon-Wiener se obtiene como:

-sum( p * log( p ) ) -> H
H

Finalmente, la riqueza y las equitatividades de los índices de Simpson y Shannon-Wiener se calculan como:

length( n ) -> S
( 1 / D1 ) / S
H / log( S )

Todos estos cálculos se pueden realizar automáticamente utilizando la función div, incluida en el archivo eco2.RData, que también proporciona los números de Hill (1973). Comprueba que \(N_{-\infty}\) es el recíproco de la proporción de la especie menos abundante, \(N_0\) es la riqueza, \(N_1\) es el exponencial del índice de Shannon-Wiener, \(N_2\) es el recíproco del índice de Simpson para comunidades infinitamente grandes, y \(N_\infty\) es el recíproco de la proporción de la especie más abundante.

div( n )
Ejercicio 1

Realiza el cálculo de todos los índices para la comunidad B usando calculadora. Comprueba posteriormente los resultados usando la función div.

Cuando tenemos datos de abundancia de especies en varios inventarios o unidades de muestreo podemos calcular índices para cada uno de los inventarios (diversidad puntual), o para el conjunto de la muestra (diversidad \(\alpha\)). Por ejemplo, el objeto inventarios, incluido en el archivo eco2.RData, contiene los datos simulados de abundancia de 10 especies en 10 inventarios:

inventarios

Para calcular la diversidad del conjunto de la muestra tenemos que estimar la abundancia total de cada especie, sumando las columnas de la tabla, y aplicar la función div sobre la suma:

colSums( inventarios )
div( colSums( inventarios ) )

También podemos calcular los índices para cada uno de los inventarios (filas de la tabla). Por ejemplo:

div( inventarios[ 2, ] )
div( inventarios[ 4, ] )

(C) Curvas de rango-abundancia

Utilizaremos en este apartado el objeto rango, incluido en el archivo eco2.RData, que contiene los inventarios simulados de dos comunidades de ejemplo:

rango

Para representar las curvas de rango-abundancia debemos ordenar las especies según su abundancia o proporción, de mayor a menor:

sort( rango$a, decreasing = TRUE )
sort( rango$b, decreasing = TRUE )

La representación se hace con escala logarítmica en el eje de ordenadas:

plot( sort( rango$a, decreasing = TRUE ), log = "y" )
points( sort( rango$b, decreasing = TRUE ), col = 2 )

Podemos comprobar como ambas curvas reflejan también las diferencias en los valores de los índices de diversidad de ambas comunidades:

div( rango$a )
div( rango$b )

La función radfit, del paquete vegan, permite realizar la representación de manera automática, incluyendo además las curvas de ajuste de diferentes modelos: broken stick (null), lognormal, serie geométrica (preemption)... Además proporciona parámetros para evaluar qué modelo presenta un mejor ajuste a los datos (valor más bajo de AIC o BIC):

radfit( rango$a )
plot( radfit( rango$a ) )
radfit( rango$b )
plot( radfit( rango$b ) )

Aplicaremos también la función con los datos de 50 inventarios de especies de árboles de la isla Barro Colorado (objeto BCI, incluido también en vegan):

data( BCI )
radfit( colSums( BCI ) )
plot( radfit( colSums( BCI ) ) )
Ejercicio 2

Representa la curva de rango-abundancia del conjunto de inventarios del objeto inventarios.

(D) Curvas de acumulación de especies

En este apartado utilizaremos de nuevo los datos del objeto inventarios.

inventarios

Aunque el número acumulado de especies se puede calcular visualmente, la tarea se puede simplificar utilizando la función acum, incluida en el archivo eco2.RData:

plot( acum( inventarios ), type = "l" )

Recuerda que las curvas de acumulación de especies dependen del orden en el que se registren los datos de los inventarios. Por ejemplo, si cambiamos el orden de las filas del objeto inventarios, obtendremos una curva distinta:

inventarios[ order( 10:1 ), ] -> inventarios2
inventarios2
lines( acum( inventarios2 ), col = 2 )

El paquete vegan incorpora la función specaccum, mucho más completa, con opciones que permiten representar otros tipos curvas que veremos más adelante. La usaremos aquí con los inventarios de especies de árboles de la isla Barro Colorado:

plot( specaccum( BCI, method = "collector" ) )

(E) Curvas de rarefacción

Para representar curvas de rarefacción utilizaremos la función specaccum, ahora sin argumento:

plot( specaccum( BCI ) )

La gráfica incluye barras de error que representan los intervalos de confianza al 95\(\,\)%. El estilo de representación del intervalo de confianza de la curva y los colores pueden cambiarse. Por ejemplo:

plot( specaccum( BCI ), ci.type = "poly", ci.lty = 0, ci.col = "grey90" )

Sobre esta gráfica podemos añadir la curva de acumulación:

plot( specaccum( BCI, method = "collector" ), add = TRUE, col = 2 )

(F) Estimadores de riqueza

Siguiendo con el ejemplo de los árboles de la isla Barro Colorado, usaremos en este caso la función poolaccum del paquete vegan:

poolaccum( BCI )
plot( poolaccum( BCI ) )

La primera curva (“S”) es en realidad la curva de rarefacción. Si queremos, por ejemplo, representar el estimador Jackknife 1, y compararlo con la curva de acumulación, usaremos:

plot( summary( poolaccum( BCI ) )$jack1, type = "l", ylim = c(0, 250))
plot( specaccum( BCI, method = "collector" ), add = TRUE, col = 2)
Ejercicio 3

Con los datos del objeto BCI, representa en una misma figura el estimador de riqueza Chao, la curva de rarefacción y la currva de acumulación de especies. Recuerda usar el argumento add = TRUE.

(G) Índices de diversidad beta e índices de similitud

Se emplean para comparar dos comunidades (o unidades de muestreo) entre sí. Para calcular los diferentes índices de este apartado usaremos la función betadiver del paquete vegan. Lo aplicaremos inicialmente sobre un caso sencillo de ejemplo, donde se representan las especies presentes en dos comunidades:

Los datos de presencia/ausencia de especies de este ejemplo están disponibles en el objeto animales:

animales

De forma habitual estos índices se formulan utilizando expresiones con los parámetros \(a\) (número de especies presentes en las dos comunidades), \(b\) y \(c\) (número de especies presentes solo en la primera y segunda comunidad, respectivamente). La función betadiver calcula numerosos índices (tabla 1 del artículo de Koleff et al. 2003), que podemos consultar usando:

betadiver( help = TRUE )

Así, el índice de diversidad beta de Whittaker, expresado como \(\beta_{W} = \left( \frac{S}{\overline{\alpha}} \right) - 1\), se obtiene mediante:

betadiver( animales, method = "w" )

Para calcular los índices de Jaccard y Sørensen (índices de similitud) usaremos:

betadiver( animales, method = "j" )
betadiver( animales, method = "sor" )

Estos índices de similitud pueden convertirse fácilmente en índices de diversidad beta:

1 - betadiver( animales, method = "j" )
1 - betadiver( animales, method = "sor" )

Si aplicamos la función betadiver sobre un objeto que contenga más de dos inventarios, la función proporciona una matriz con todos los valores del índice elegido entre pares de inventarios:

betadiver(inventarios, method = "w" )
Ejercicio 4

Usando el objeto inventarios, calcula la matriz de similitud con el índice de Sørensen. ¿Qué inventarios son los más distintos entre sí? ¿En qué inventarios se ha registrado la misma composición de especies?

3. Evaluación

Los seminarios de la asignatura no cuentan con pruebas de evaluación, pero sus contenidos y actividades pueden ser objeto de preguntas en el examen final. Se recomienda la realización de todos los ejercicios propuestos.

4. Bibliografía

  • Gotelli NJ, Ellison AM (2018) A Primer of Ecological Statistics. 2ª ed. Sinauer, Sunderland, MA.

  • Hill MO (1973) Diversity and evenness: A unifying notation and its consequences. Ecology 54: 427-432.

  • Koleff P, Gaston KJ, Lennon JJ (2003) Measuring beta diversity for presence-absence data. Journal of Animal Ecology 72: 367-382.

  • Magurran AE (1989) Diversidad ecológica y su medición. Vedrá, Barcelona.

  • Oksanen J et al. (2022) _vegan: Community Ecology Package_. R package version 2.6-2, https://CRAN.R-project.org/package=vegan

Descripción de los datos y funciones

Utiliza la función info. Por ejemplo: info("inventarios") o info("div").

Anexo

Índices de dominancia, diversidad y equitatividad

  • Índice de Simpson (para una comunidad infinitamente grande)

\[D = \sum_{i=1}^S \Big( \frac{n_i}{N} \Big) = \sum_{i=1}^{S} p_i^2\]

  • Índice de Simpson (para una comunidad finita)

\[D = \sum_{i=1}^S \Big( \frac{n_i[n_1-1]}{N[N-1]} \Big)^2\]

  • Recíproco del índice de Simpson (índice de diversidad). Valores entre 1 y el valor de riqueza (número total de especies)

\[\frac 1 D = 1 \Big/ \sum_{i=1}^S \Big( \frac{n_i[n_1-1]}{N[N-1]} \Big) \approx 1 \Big/ \sum_{i=1}^{S} p_i^2\]

  • Complemento del índice de Simpson (índice de diversidad de Gini-Simpson). Valores entre 0 y 1.

\[1 - D = 1 - \sum_{i=1}^S \Big( \frac{n_i[n_1-1]}{N[N-1]} \Big) \approx 1 - \sum_{i=1}^{S} p_i^2\]

  • Equitatividad (del recíproco del índice de Simpson). Se calcula con el recíproco de la fórmula simple (para comunidades infinitas). Valores entre 0 y 1.

\[E = \frac {(1 / D)} {(1 / D )_{max}} = \frac {(1 / D)} S\]

  • Índice de Shannon-Wiener

\[H' = -\sum_{i=1}^{S} p_i \, \ln(p_i)\]

  • Equitatividad (del índice de Shannon-Wiener).

\[J = \dfrac{H'}{H'_{max}} = \dfrac{H'}{ln \, S}\]

  • Índice PIE (probabilidad de encuentro interespecífico). Equivalente al índice de Gini-Simpson.

\[PIE = \left( \frac{N}{N-1} \right) \left(1 - \sum_{i=1}^{S} \Big(\frac{n_i}{N} \Big) \right)^2\]