¿Qué es el Análisis de Correspondencias Canónico?

El Análisis de Correspondencias Canónico (CCA) es una técnica multivariante que permite representar en un espacio geométrico de pocas dimensiones las proximidades existentes entre un conjunto de objetos condicionado por una serie de variables predictoras. El CCA es una técnica de ordenación restringida (constrained ordination), lo que significa que la ordenación de los objetos representa solamente la estructura de los datos que maximiza la relación con una segunda matriz de variables predictoras. Normalmente el CCA relaciona dos matrices: la matriz de variables dependientes (p.e. una matriz de sitios x especies) y la matriz de variables independientes (p.e. una matriz de variables ambientales). La relación entre ambas matrices se hace por medio de técnicas de regresión multivariante.

Cuando se utiliza CCA es importante tener en cuenta lo siguiente:

  1. El CCA incluye la aplicación de técnicas de regresión y, por tanto, todas los supuestos y consideraciones de los modelos lineales han de ser tenidos en cuenta.
  2. A medida que el número de variables ambientales aumenta con respecto al número de observaciones (muestras), el resultado del CCA se hace más dudoso, independientemente de que las relaciones observadas sean aparentemente fuertes.
  3. Los usuarios de esta técnica han de tener en cuenta que su interpretación no supone una descripción de los datos de la matriz de variables dependientes per se, sino más bien de la parte de la estructura de los datos que está relacionada con las variables predictoras.

En el CCA, la variabilidad explicada por los ejes de ordenación está representada por el término inercia (Inertia). Hay una inercia total que representaría la variabilidad total de los datos (como la devianza del modelo nulo en GLM) y una devianza de la ordenación restringida (constrained inertia) que informa de la parte de la variabilidad total explicada por las variables predictoras en el CCA. Asimismo es interesante ver qué proporción de dicha variabilidad queda explicada por cada uno de los ejes del CCA, teniendo en cuenta que habrá tantos ejes como variables predictoras incluyamos en el modelo, si bien generalmente la mayor parte de la variabilidad va a quedar resumida en los 2 o 3 primeros ejes.

Caso de estudio: ¿Cómo se relaciona la estructura de comunidades de plantas con las variables ambientales en bosques tropicales montanos?

(Fuente: Cayuela et al. (2006). Journal of Applied Ecology 43: 1172-1181)
Se quiere investigar cómo se relaciona la estructura de comunidades de árboles con distintas variables ambientales en parcelas de 0.1 hectáreas muestreadas en distintos tipos de bosques tropicales en los Altos de Chiapas, México (bosque de pino-encino (POF), bosque de encino (OF), bosque de pino (PF), bosque nublado (MCF) y bosque transicional a selva baja caducifolia (TF)).

Para este caso de estudio se han seleccionado las 86 especies más abundantes sobre un total de 231 en 204 parcelas de 0.1 hectáreas. Para cada especie tenemos su abundancia total en cada parcela. Queremos investigar específicamente qué parte de la composición de estos bosques está explicada por las variables ambientales, incluyendo la productividad (medida a partir del índice de vegetación NDVI obtenido de una imagen Landsat del año 2000), la elevación y el tipo de bosque.

Objetivos:

  1. Investigar cuál es la relación entre especies y sitios explicada por variables ambientales.
  2. Visualizar los datos con distintas funciones gráficas y entender los resultados de un CCA.

Documentación


Datos

Los datos para realizar este ejercicio constan de:

  • Matriz de parcelas (filas) x especies (columnas), disponible aquí.
  • Variables ambientales para las parcelas muestreadas (tipo de bosque, productividad y elevación), disponible aquí.

Puedes descargarte los datos a tu ordenador, copiarlos al portapapeles o leerlos directamente de la dirección URL (esto último es lo más recomendable para que el código sea reproducible desde cualquier ordenador) utilizando en todos los casos la función read.table().


Pasos a seguir

  1. Lee los datos y salva la matriz de parcelas x especies en un objeto llamado bio y la matriz de variables ambientales en un objeto llamado env. Explora los datos con las funciones edit() y str(). ¿Cuáles serían las variables sobre las que realizaríamos la ordenación? ¿Cuáles serían las variables explicativas? ¿Son todas ellas numéricas?
  2. Busca una función en R que permita realizar un CCA (busca con help.search() o en la documentación adjunta). Nota: la función que vamos a usar en esta sesión se encuentra dentro del paquete vegan. Mira el ejemplo para ver cómo introducir los datos y el tipo de resultados que puedes esperar.
  3. Explora la estructura del objeto resultante con la función str(). ¿Qué tipo de objeto es? ¿Qué información contiene?
  4. ¿Qué proporción de la variabilidad de la matriz de especies está explicada por las variables ambientales? ¿Cuánto explica cada eje del CCA?
  5. Dibuja el resultado de la ordenación con la función plot().
  6. Utiliza las funciones ordiplot3d() y ordirgl() para visualizaciones tridimensionales de los datos. ¿Qué hace cada función? Mira la documentación adjunta para ver cómo utilizar estas funciones.
  7. En el caso particular de la función ordiplot3d() utiliza el argumento type = "n" para no representar los puntos en la función gráfica de alto nivel. Luego utiliza las funciones gráficas de bajo nivel points() y text() para añadir los puntos a la gráfica (especificando que cada tipo de bosque quede representado con un color distinto con el argumento col = as.numeric(env$Forest.type)) y el texto referente a las flechas (variables ambientales) y al factor (tipo de bosque).
  8. Interpreta los resultados de los gráficos.

Código


#1. Lee los datos de especies x sitios y los salva en un objeto llamado bio
dirweb1<-"http://archivos-para-subir.googlegroups.com/web/Ejemplo6-MANOVA-bio.txt?gda=1IAa20kAAAABV8DnKdep7DQec7BaKTDeBPd28HfO9xOunBjA2suhaJ6IEOiK_0OxuhSPY5Vei4huVeXSx4RxS8jZwRxQen_vhAioEG5q2hncZWbpWmJ7IQ"
bio<-read.table (url(dirweb1), sep="\t", header=T)
str(bio)


#2. Lee las variables ambientales y las salva en un objeto llamado env
dirweb2<-"http://archivos-para-subir.googlegroups.com/web/Ejemplo6-MANOVA-env.txt?gda=NGK620kAAAABV8DnKdep7DQec7BaKTDeaue8KNoVd8Bv-0CJ6ZtUV32e1Yh2n-Hw8AgLoYTWPoiVe4_ieyH6onjq9H3_yT21hAioEG5q2hncZWbpWmJ7IQ"
env<-read.table (url(dirweb2), sep="\t", dec=".", header=T)

#3. Ajusta el CCA
var.luis<-cca(bio~Forest.type+Productivity+Elevation,data=env)
summary(var.luis)
install.packages("scatterplot3d")
library(scatterplot3d)
install.packages("rgl")
library(rgl)
ordiplot3d(var.luis)
ordiplot3d(var.luis, type="n")
caja<-ordiplot3d(var.luis, type="n")
points(caja, "points", col=as.numeric(env$Forest.Type))
points(caja, "points", col=as.numeric(env$Forest.type))
text(caja, "arrows")
text(caja, "centroids")
ordirgl(var.luis)