load( url( "http://webs.um.es/jfcalvo/eco2.RData" ) )
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:
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 -> p
n; N ; p n
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
; D2 D1
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 - 1 ) ) * ( 1 - sum( ( n / N ) ^ 2 ) ) (N
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
( / log( S ) H
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 )
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 ) ) )
(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:
order( 10:1 ), ] -> inventarios2
inventarios[
inventarios2lines( 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)
(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" )
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\]