Está en la página 1de 9

Análisis de diversidad en R

¿Por qué hacer el análisis de diversidad en R?

A la hora de hacer un análisis de diversidad (alfa, beta, gamma), normalmente necesitamos manejar grandes
bases de datos. Dicho análisis requiere el uso de múltiples formulas matemáticas que incluso podríamos
hacer en una calculadora de celular. Sin embargo, en un contexto científico, la obtención de valores de
índices de diversidad pueden ser mejor interpretados por medio de figuras e incluso por análisis
estadísticos. Existen muchos softwares estadísticos que nos realizan dichos análisis de diversidad, pero no
nos permiten ilustrarlos, lo cual nos obliga a trabajar en otro software. Tambien encontramos algunos
softwares que nos realizan el análisis y nos permiten diagramarlos, pero muchos de estos son costosos y
de difícil acceso. R es una herramienta gratuita perfecta para la implementación de dichos análisis, con
análisis estadísticos robustos y una interpretación gráfica impecable y de alto nivel, es decir:
TODO EN UNO!

Con R ustedes pueden realizar desde simples operaciones matemáticas, pasando por análisis estadisticos
avanzados, hasta proyección de graficos en tercera dimensión. Incluso, este documento que están
leyendo en este momento fue elaborado con R!!

El presente documento tiene como objetivos:


1) Entender las bases del lenguaje en R e introducir el manejo de funciones sencillas.

2)Aprender la elaboración del análisis de diversidad Alfa y Beta.

3)Graficar los resultados de un análisis de diversidad.

¿Cómo formatear los datos en R?

Para poder trabajar en R necesitamos tener los datos en un formato especial (no dificil). A continuación
enumeraremos las condiciones básicas del archivo para que R lo pueda leer sin problemas:

1. R puede leer archivos en formatos .xlsx, .csv y .txt.


2. El archivo debe estar organizado generalmente con las variables en las columnas y los individuos o
unidades de muestreo en las filas (más adelante veremos que hay excepciones como en el caso de
los análisis de diversidad).
3. En el archivo no debe haber espacios. Una alternativa es reemplazar los espacios con un guión bajo
(ej. El_ejemplo).
4. Los decimales deben estar separados por puntos y los miles sin separar por algún símbolo (ej.
deci- mal=14.2; miles=3400).
5. No utilizar símbolos raros (ej. $ % & # @) ya que muchas veces R no los reconoce o los cambia
por otros símbolos.

Con estas condiciones básicas podemos empezar a trabajar con nuestros datos en R.
¿Cómo cargar los datos en R?

Para este caso, utilizaremos una base de datos de un estudio sobre diversidad de mamíferos en cuatro
lugares diferentes. Para esto, nos basaremos en la matriz de abundancias (también se puede usar una matriz
de presencia/ausencia), en donde los lugares van en las filas y cada una de las especies en las columnas.

Existen diferentes maneras de cargar los datos en R. Esto depende del formato o simplemente del directorio
de trabajo que tengamos. Para este análisis de diversidad utilizaremos el comando read.table que nos
permite leer un archivo en formato .txt desde nuestro computador. Para esto, hay que empezar por guardar
los datos en un archivo delimitado por tabulaciones.txt. Una vez guardado el archivo, le damos un nombre a los
datos (en mi ejemplo se llaman “mis_datos”) y los cargamos con el siguiente comando:

Load the database

setwd("~/Documents/MAESTRIA/Protocolos/Análisis de la diversidad de R")

mis_datos=read.table("Indices de diversidad Mamíferos.txt",h=T)

Para saber que nuestros datos han cargado con éxito, podemos ver un “encabezado” de estos con el siguiente
comando:

head(mis_datos)

Este encabezado nos permite ver los 6 primeros datos y el nombre de todas las variables de nuestra base de
datos. En nuestro caso, las columnas corresponden a las especies registradas y las filas a cada uno de los
lugares en donde hubo o no registros de esas especies (matriz de abundancias).

Como sabemos, existen diferentes índices para medir la diversidad en un lugar dado (diversidad alfa) o
para comparar diferentes lugares (diversidad beta). Para este caso, utilizaremos los índices más usados en
diversidad alfa como el índice inverso de Simpson, Margalef y de equidad de Shannon. Por otro lado,
reliazaremos una curva de acumulación de especies la cual nos permite saber si el número de especies
registradas es estadísticamente representativo, utilizando uno o varios estimadores no paramétricos.

Diversidad alfa

La diversidad alfa nos permite establecer el número de especies que existe en un lugar. Particularmente,
los índices para medir esta diversidad nos permiten analizar cuantitativamente la diversidad de especies.
Tres de los indices mas usados son:

1) Índice de Simpson (λ): Este índice está muy influenciado por las especies dominantes, teniendo
en cuenta que se basa en la abundancia de cada especie. La formula para calcular este índice es:

𝑛2
𝜆 = Σ (𝑁2 ) = Σ𝑝𝑖2

En donde pi es la abundancia proporcional de la especie n y N es el número total de especies


2) Índice de Margalef (DMg): Este índice se basa en la relación entre el número de especies
encontradas y la abundancia total. La fórmula para calcular este índice es:

𝑆−1
𝐷𝑀𝑔 =
𝑙𝑛𝑁
En donde S es el número de especies y N el número total de individuos.

3) Índice de Shannon-Wiener (H′): Este índice asume que todas las especies están representadas en
las unidades muesteales y que el muestreo de los individuos fue al azar. La fórmula para calcular este
índice es:

𝐻´ = −Σ𝑝𝑖 𝑙𝑛𝑝𝑖

En donde pi es la abundancia proporcional de la especie i.

Como vemos, calcular estos índices a mano puede llegar a volverse una tarea tediosa. En R podemos
calcularlos todos, basándonos en nuestra matriz de abundancias, con ayuda del paquete “vegan” que incluye
análisis de diversidad. Para empezar, debemos instalar el paquete en nuestro programa con el siguiente
comando:

install.packages("vegan", repos = "http://cran.us.r-project.org")

Ahora cargamos el paquete:

library(vegan)

La función diversity de este paquete, nos permite sacar al menos el índice de Simpson y su inverso y el
índice de Shannon. Para esto, escribimos el siguiente comando:

Simpson=diversity(mis_datos[2:27], "simpson")

InvSimpson=diversity(mis_datos[2:27], "invsimpson")

Shannon=diversity(mis_datos[2:27], "shannon")

Desafortunadamente este paquete no nos permite sacar el índice de margalef, por esta razón lo vamos a
hacer manual. . . por ahora! Para esto, necesitamos el número de especies totales y el número de
individuos para cada lugar. Teniendo en cuenta la ecuación para el índice de Margalef que se mostró
anteriormente, usamos los siguientes comandos:

margalef=(c(((19-1)/log(52)),((6-1)/log(10)),((9-1)/log(32)),((5-1)/log(5))))
Por otra parte, un índice de diversidad igual de poderoso al índice inverso de Simpson es el índice
exponencial de Shannon. Este indice nos permite evaluar que tan diverso es un lugar “agrandando” la
magnitud del índice de Shannon. Para calcularlo simplemente aplicamos la siguiente formula:

expShannon=exp(Shannon)

Una vez tenemos todos los índices, procedemos a organizarlos en una matriz para poder visualizarlos mejor.
Para hacer la matriz usamos el siguiente comando:

alfa_mamiferos= t(matrix( c(Simpson,InvSimpson,Shannon,margalef, expShannon),nrow=4, ncol= 5))

colnames(alfa_mamiferos)=c("A","B","C","D")

rownames(alfa_mamiferos)=c("Simpson 1-D","Simpson 1/D","Shannon H","Margalef", "expShannon")

Para poder graficar los resultados necesitamos convertir nuestra matriz de resultados (alfa_mamiferos) en
un marco de datos (data.frame) con ayuda del paquete “reshape2”.

install.packages("reshape2", repos = "http://cran.us.r-project.org")

library(reshape2)

Ahora, con la función “melt” transformamos nuestra matriz en un data.frame:

alfamamiferos2= melt(as.data.frame(alfa_mamiferos), value.name="Valor")

Por último, adicionamos una variable con el nombre de los índices de diversidad:

alfamamiferos2$Indice=rep(c("Simpson 1-D","Simpson 1/D","Shannon H","Margalef", "expShannon ,4)

colnames(alfamamiferos2)=c("Lugar","Valor","Indice")

Ahora graficamos la los índices por cada uno de los lugares muestreados. Para esto instalaremos un paquete
llamado “ggplot2” el cual nos permite hacer figuras de alto nivel, además de muchos análisis
estadísticos avanzados.

library(ggplot2)

Para visualizar gráficamente los índices, lo mas recomendable es una figura de barras o “barplot”. Con la
siguiente linea de comandos realizaremos el barplot:

ggplot(alfamamiferos2,aes(x=Lugar,y=Valor,fill=Indice)) +

geom_bar(stat="identity", position=position_dodge()) + theme_bw(16) +


scale_fill_manual(values=c("papayawhip","peachpuff","peachpuff2","peachpuff3", "peachpuff4"))

Gráficamente se puede ver mejor cual de los lugares fue mas diverso. Sin embargo, a la hora de comparar la
diversidad entre lugares debemos aplicar metodos de diversidad beta. Para esto usaremos de nuevo el
paquete “vegan”.

Diversidad beta

La diversidad beta nos permite comparar la diversidad entre diferentes lugares o ecosistemas. Existen
diferentes formas de comparar la diversidad entre lugares, una de estas es la distancia de Bray-Curtis basada
en una matriz de disimilaridad entre los lugares muestreados.

Primero tomaremos de nuevo nuestra matriz de abundancias “mis datos” y a partir de esta, sacaremos una
matriz de disimilaridad con la distrancia de Bray-Curtis para cada uno de los lugares con la función
“vegdist”. También se pueden usar otro tipo de distancias (Euclidiana, Jaccard, Mahalanobis, entre otras).

ncol(mis_datos)

distmamiferos=vegdist(mis_datos[2:27], method="bray")

Ahora, con esa matriz de disimilaridad podemos vidualizar en un espacio bidimensional que tan cercanos o
lejanos estan los lugares entre si, de acuerdo a su distrancia ecológica basada en la diversidad de especies.
Esta figura la podemos hacer con la función “cmdscale” que basicamente realiza un Análisis de Coordenadas
Principales (uno de los tantos metodos multivariados) y posteriormente se grafíca con a función “ordiplot”.

PCoAmamiferos=cmdscale(distmamiferos, k=nrow(mis_datos)-1, eig=T, add=F)


FiguraPCoA=ordiplot(PCoAmamiferos,type="points",ylim=c(-0.3,0.7)) abline(h=0,lwd=0.5,lty=2)

abline(v=0,lwd=0.5,lty=2)

points(FiguraPCoA,"sites", pch=c(15,18,17,19), col=c("pink","pink2","pink3","pink4"),cex=2)

legend(0.8,0.7,c("A","B","C","D"), pch=c(15,18,17,19)
 , col =c("pink","pink2","pink3","pink4"))

En esa figura podemos observar que los lugares A y B están más cerca, lo cual indica que son mas similares
en la diversidad de especies. Igualmente, esta figura suele ser acompañada con un Análisis Cluster, que
muestra en un dendrográma la cercanía en diversidad de los lugares muestreados. Para esto, utilizaremos la
función “hclust” basados en la matriz de disimilaridades.

clustmamiferos=hclust(distmamiferos)

plot(clustmamiferos, labels=c("A","B","C","D"), ylab="Distancia Bray-Curtis", xlab="Lugares",


main="Dendrograma de similaridad\nMamíferos", frame.plot=T)
Curva de acumulación de especies

Una curva de acumulación de especies nos indica que nuestro esfuerzo de muestreo fue suficiente para
registrar la mayoría de especies presentes en un lugar dado. Estas curvas suelen interpretarse de manera que
cuando alcanza una asíntota, aunque se aumente el esfuerzo de muestreo, el número de especies no
incrementará significativamente. Igualmente, existen estimadores no paramétricos que se basan en métodos
de aleatorización o bootstraping que nos pueden predecir cómo es la acumulación de especies. Al comparar
la curva de las especies registradas con la curva de uno de estos estimadores, podemos decir si nuestro
muestreo fue representativo.

A continuación, aprenderemos a hacer una curva de acumulación de especies con R, adicionando un


estimador no paramétrico. Para esto utilizaremos el paquete “vegan” con la función “specaccum”, basados en
una matriz de abundancias por día de muestreo.

curva=read.table("Curva de acumulación Mamíferos.txt",h=T)

curva_mamiferos=specaccum(curva, "random")

plot(curva_mamiferos, ci.type="poly", col="black", lwd=2, ci.lty=0, ci.col="gray87",



xlab="Número de días",ylab="Número de especies")

boxplot(curva_mamiferos, col="pink4", add=TRUE, pch="+")


Ahora, como se mencionó anteriormente, se pueden incorporar estimadores no paramétricos a esta curva
de acumulación, uno de los mas rigurosos y que se usa con matrices de abundancias es el estimador
CHAO1. Sin embargo existen otros como “jacknife” o “Bootstrap” que también los ofrece R. Para obtener
estos estimadores utilizaremos la función “poolaccum”.

estimadores=poolaccum(curva)


De esos estimadores sacaremos unicamente los que nos interesan (en este caso CHAO) y lo pondremos en
un data.frame como aprendimos anteriormente:

estimadores2=data.frame(estimadores$means[,2],estimadores$means[,3])

colnames(estimadores2)=c("Sobs","CHAO")
 chao= melt(as.data.frame(estimadores2),


value.name="Valor")

colnames(chao)=c("Estimador","Valor")

chao$Ndias=rep(3:26,2)

Finalmente graficamos nuestra curva de acumulación de especies con el estimador no paramétrico CHAO:

ggplot(chao, aes(y=Valor, x=Ndias, colour=factor(Estimador))) +
 stat_smooth(method=loess) +


theme_bw(18) +
 xlab("Eventos de muestreo") + ylab("Número de especies") +
scale_colour_manual(values=c("blue","darkolivegreen"), name="Estimadores\nEstadísticos",
labels=c("sp.\nObservadas","Chao"))
Taller
Se les contrata como biólogos para realizar inventarios de mamíferos mediante cámaras trampa, censos de
primates, trampas Sherman y redes de niebla, en cuatro hábitats con diferente composición vegetal y
variables abióticas.

 Cultivo de café
 Sabana
 Bosque amazónico
 Bosque de alta montaña

1. A partir de los resultados deben encontrar que hábitats fueron los más diversos de manera local mediante
los índices de Margalef, Inverso de Simpson y Exponencial de Shannon (Muestre sus resultados en una
tabla)
2. Encontrar si existe dominancia en la composición de especies de mamíferos dentro de cada uno de los
hábitats estudiados.
3. Además se les pide que indiquen la similitud entre los cuatro hábitats teniendo como base la composición
de especies de mamíferos en cada uno de los lugares.
4. Comprobar si el esfuerzo de muestreo realizado fue suficiente.
5. Mostrar todo lo anterior gráficamente y discuta los resultados incluyendo bibliografía que haga referencia
a cada índice y sus diferencias.