Introducción

En esta práctica aprenderás a hacer una reconstrucción de estados ancestrales utilizando datos filogenéticos reales del género Geospiza, un grupo de pinzones de las Islas Galápagos. Usaremos:

1. Instalación

El primer paso será instalar los paquetes y cargarlos. Recuerda que cada vez que inices R tienes que cargar los paquetes.

#Instalar paquetes sino los tienes (para poder instalarlos borrar # al inicio)
# install.packages("geiger")
# install.packages("ape")
# install.packages("phytools")

#una vez instalados, los cargamos
library(geiger)
## Loading required package: ape
## Loading required package: phytools
## Loading required package: maps
library(ape)
library(phytools)

2. Carga de datos

Cargamos los datos de la filogenia y medidas morfologicas que vamos a utilizar, los cuales están precargados en el paquete geiger.

# Cargar datos de los paquetes
data(geospiza)
tree <- geospiza$phy
trait <- geospiza$dat
trait
##                 wingL  tarsusL  culmenL    beakD   gonysW
## magnirostris 4.404200 3.038950 2.724667 2.823767 2.675983
## conirostris  4.349867 2.984200 2.654400 2.513800 2.360167
## difficilis   4.224067 2.898917 2.277183 2.011100 1.929983
## scandens     4.261222 2.929033 2.621789 2.144700 2.036944
## fortis       4.244008 2.894717 2.407025 2.362658 2.221867
## fuliginosa   4.132957 2.806514 2.094971 1.941157 1.845379
## pallida      4.265425 3.089450 2.430250 2.016350 1.949125
## fusca        3.975393 2.936536 2.051843 1.191264 1.401186
## parvulus     4.131600 2.973060 1.974420 1.873540 1.813340
## pauper       4.232500 3.035900 2.187000 2.073400 1.962100
## Pinaroloxias 4.188600 2.980200 2.311100 1.547500 1.630100
## Platyspiza   4.419686 3.270543 2.331471 2.347471 2.282443
## psittacula   4.235020 3.049120 2.259640 2.230040 2.073940

3. Limpieza de datos

Vamos a limpiar los datos y prepararlos para el análisis. La filogenia incluye un grupo externo que vamos a eliminar, dado que para ese outgrup no tenemos medidas morfológicas.

# Eliminar el outgroup "olivacea" del árbol dado que no tenemos medidas morfológicas
tree_clean <- drop.tip(tree, "olivacea")

# Verificar dimensiones
nrow(trait)
## [1] 13
length(tree_clean$tip.label)
## [1] 13
# Asignar los nombres de las especies al data.frame
rownames(trait) <- tree_clean$tip.label

# Extraer el vector de caracteres que vamos a utilizar, en este caso el 3, longitud del culmen
trait_vector <- trait[, 3]
names(trait_vector) <- rownames(trait)

# Confirmar que no hay NA
any(is.na(trait_vector))
## [1] FALSE

4. Reconstrucción

Vamos a hacer la reconstrucción usando la función fastAnc. fastAnc estima el valor del rasgo en nodos ancestrales del árbol.

# Reconstrucción usando fastAnc
fit <- fastAnc(tree_clean, trait_vector, vars = TRUE, CI = TRUE)

# Resultados
fit$ace     # estimaciones
##       14       15       16       17       18       19       20       21 
## 2.309291 2.313483 2.317011 2.325607 2.365480 2.421280 2.436372 2.482900 
##       22       23       24       25 
## 2.620656 2.246968 2.121101 2.056319
fit$CI      # intervalos de confianza
##        [,1]     [,2]
## 14 1.920139 2.698444
## 15 1.959309 2.667657
## 16 1.987990 2.646031
## 17 2.043789 2.607425
## 18 2.137903 2.593057
## 19 2.217774 2.624785
## 20 2.234667 2.638077
## 21 2.297099 2.668701
## 22 2.472630 2.768681
## 23 2.063930 2.430005
## 24 2.007802 2.234401
## 25 1.967047 2.145592

5. Mapa de la reconstrucción

contMap muestra un gradiente de color que representa la evolución del rasgo a través del tiempo y el árbol.

obj <- contMap(tree_clean, trait_vector, plot = FALSE)

# Gráfico en forma radial
plot(obj, type = "fan",
     legend = 0.7 * max(nodeHeights(tree_clean)),
     fsize = c(0.6, 0.7))

Los tonos más claros u oscuros reflejan diferencias en el valor estimado del rasgo (como longitud de pico), ayudándonos a visualizar cómo ha cambiado a lo largo de la evolución este rasgo.

Este documento forma parte de una práctica para los cursos de Biología Evolutiva (Roberto E. Munguía) y Ecología de las Interacciones Bióticas (Laura E. Nuñez) en la FES Iztacala, UNAM.

.