El presente documento contempla los pasos mínimos para el análisis de la biodiversidad para la elaboración de IGAs (EIAs principalmente) en R. Los métodos numéricos presentados son aplicables para comunidades terrestres, pero están principalmente diseñados para evaluar el componente hidrobiológico.
El presente script está diseñado para cumplir con los siguientes objetivos:
Análisis de la riqueza y composición taxonómica.
Análisis de la abundancia y abundancia relativa.
Cálculo de la curva de acumulación de especies.
Análisis de indicaodres de diversidad (Diversidad alfa)
Análisis de similitud (Diversidad beta)
library(FSA)
library(dplyr)
library(picante)
library(spacodiR)
library(reshape2)
library(cowplot)
library(vegan)
library(ggplot2)La base de datos a emplear son datos comunitarios de una comunidad de copépodos de Oslo.
Para que los datos funcionen se necesita una matriz en la que las columnas contengan los nombres de las especies y en las filas las comunidades, muestras y/o sitios de muestreo según corresponda. El contenido de la matriz contiene el número de cada especie encontrada en cada sitio (abundancias), biomasa, o datos de presencia ausencia (0 y 1).
Usualmente los datos son organizados según los parámetros explicados, sin embargo, en algunos casos los datos pueden tener una organización de basada en Sitios, Abundancia y Especies.
A continuación se presentan scripts que permiten manipular datos en ambos casos.
Visualizamos los nombres de las variables:
names(df)## [1] "X" "Cerianthus_lloydi"
## [3] "Halicryptus_sp" "Onchnesoma"
## [5] "Phascolion_strombi" "Golfingia_sp"
## [7] "Holothuroidea" "Nemertina_indet"
## [9] "Polychaeta_indet" "Amaena_trilobata"
## [11] "Amphicteis_gunneri" "Ampharetidae"
## [13] "Anaitides_groenlandica" "Anaitides_sp"
## [15] "Apistobranchus_tullbergi" "Brada_sp"
## [17] "Caulleriella_killariensis" "Caulleriella_sp"
## [19] "Ceratocephale_loveni" "Chaetozone_setosa"
## [21] "Chone_sp" "Cossura_longocirrata"
## [23] "Diplocirrus_glaucus" "Eteone_sp"
## [25] "Euchone_analis" "Euchone_papillosa"
## [27] "Glycera_alba" "Glucinde_nordmanni"
## [29] "Glycera_rouxi" "Goniada_maculata"
## [31] "Gyptis_rosea" "Harmothoe_nodosa"
## [33] "Harmothoe_sarsi" "Harmothoe_sp"
## [35] "Hesionidae_" "Heteromastus_filiformis"
## [37] "Jasmineira_sp" "Lanassa_venusta"
## [39] "Laonice_cirrata" "Lumbrineris_scopa"
## [41] "Lumbrineris_sp" "Lysilla_loveni"
## [43] "Maldanidae" "Mediomastus_fragilis"
## [45] "Melinna_cristata" "Mugga_wahlbergi"
## [47] "Myriochele_oculata" "Nephtys_ciliata"
## [49] "Nephtys_incisa" "Nephtys_paradoxa"
## [51] "Oligochaeta" "Ophelina_acuminata"
## [53] "Ophelina_modesta" "Ophelina_sp"
## [55] "Ophiodromus_flexuosus" "Orbinia_sertulata"
## [57] "Paraonis_gracilis" "Paramphinome_jeffreysii"
## [59] "Paraonis_lyra" "Pectinaria_auricoma"
## [61] "Pectinaria_belgica" "Pectinaria_koreni"
## [63] "Pholoe_minuta" "Phylo_norvegica"
## [65] "Pilargis_papillosa" "Polydora_antennata"
## [67] "Polyphysia_crassa" "Polycirrus_plumosus"
## [69] "Prionospio_cirrifera" "Prionospio_malmgreni"
## [71] "Prionospio_steenstrupi" "Prionospio_sp"
## [73] "Proclea_graffii" "Rhodine_gracilior"
## [75] "Rhodine_loveni" "Sabellidae"
## [77] "Scalibregma_inflatum" "Scoloplos_armiger"
## [79] "Sosane_gracilis" "Sosane_sulcata"
## [81] "Sphaerodorum_flavum" "Spiophanes_kroyeri"
## [83] "Synelmis_klatti" "Terebellides_stroemi"
## [85] "Tharyx_marioni" "Trichobranchus_roseus"
## [87] "Chaetoderma_nitidulum" "Nucula_sulcata"
## [89] "Nucula_tenuis" "Nucula_nitida"
## [91] "Abra_alba" "Abra_nitida"
## [93] "Thyasira_sp" "Thracea_papyracea"
## [95] "Mysella_bidentata" "Corbula_gibba"
## [97] "Parvicardium_minimum" "Leda_pernula"
## [99] "Myrtea_spinifera" "Natica_sp"
## [101] "Philine_sp" "Ophisto_indet"
## [103] "Labidoplax_buskii" "Echinocardium_cordatum"
## [105] "Brissopsis_lyrifera" "Amphiura_filiformis"
## [107] "Astropecten_sp" "Calocaris_macandreae"
## [109] "Amphipoda" "Cumacea"
## [111] "Crustacea_indet"
Transformamos la base de datos en formato de Sitios, Abundancia y Especies con la función melt, guardamos el resultado en ofm_melt.csv para uso posterior.
df <- melt(df, id = 1)
headtail(df)## X variable value
## 1 A1 Cerianthus_lloydi 0
## 2 A2 Cerianthus_lloydi 0
## 3 A3 Cerianthus_lloydi 0
## 2638 G2 Crustacea_indet 0
## 2639 G3 Crustacea_indet 0
## 2640 G4 Crustacea_indet 0
write.csv(df, "ofm_melt.csv", row.names = FALSE)
df <- read.csv("ofm_melt.csv")
str(df)## 'data.frame': 2640 obs. of 3 variables:
## $ X : Factor w/ 24 levels "A1","A2","A3",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ variable: Factor w/ 110 levels "Abra_alba","Abra_nitida",..: 18 18 18 18 18 18 18 18 18 18 ...
## $ value : int 0 0 0 0 0 0 0 0 0 0 ...
Después de aplicar la función melt el nombre de las variables cambia a y son guardados como X, values y variable, es necesario renombrar estas variables como Site, Abundance y Species respectivamente.
df <- df %>% rename(Site = X, Species = variable, Abundance = value)
col_order <- c("Site", "Abundance", "Species")
df <- df[, col_order]
df <- df %>% filter(Abundance != 0)Luego usamos la función sample2matrix del paquete picante para organizar los datos en el formato para análisis del paquete vegan. Notar que sólo funcionará si la primera variable …
df <- sample2matrix(df)En la mayoría de casos las estaciones de monitoreo o unidades de muestreo corresponden a zonas o grupos más grandes como el hábitat (Unidades de vegetación en el caso de estudios de diversidad terrestre, ríos o hábitat acuático en el caso de estudios acuáticos), estas unidades son determinadas en base al diseño de muestreo y los resultados de los análisis deben de realizarse en relación a estas unidades de comparación. Adicionalmente se pueden añadir sectores del Proyecto como las áreas de influencia Directa e Indirecta a fin de evaluar las diferencias entre éstas áreas.
Para los datos de ejemplo se han determinado seis unidades de de comparación (A a la G), éstas unidades de comparación, estas unidades deben de ser determinadas y almacenadas en una matriz de datos aparte. A continuación observamos
str(df_id)## 'data.frame': 24 obs. of 3 variables:
## $ AreaInf: Factor w/ 2 levels "Directa","Indirecta": 1 2 1 2 1 2 1 2 1 2 ...
## $ Unidad : Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 2 2 2 2 3 3 ...
## $ Sitios : Factor w/ 24 levels "A1","A2","A3",..: 1 2 3 4 5 6 7 8 9 10 ...
En otros casos el análisis profundiza en las relaciones de la estructura comunitaria y el medio ambiente en el que se encuentra. En este caso se necesita de una matriz de datos adicional que considere estos datos ordenados para cada sitio de evaluación. Las variables a considerar dependerán de cada estudio.
Para el ejemplo, se consideran 10 variables organizadas en columnas.
str(df_env)## 'data.frame': 24 obs. of 11 variables:
## $ Sitios : Factor w/ 24 levels "A1","A2","A3",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Distancia: num 0.1 0.1 0.25 0.33 0.45 1 1 1 1.1 1.3 ...
## $ THC : int 232 443 56 32 57 38 19 25 18 13 ...
## $ Redox : int 80 189 153 150 168 126 198 203 119 143 ...
## $ Mud_perc : num 11.91 10.95 8.3 3.48 6.2 ...
## $ Phi_mean : num 3.22 3.3 3.05 2.96 3.1 3.22 2.98 3.01 3.07 3 ...
## $ Ba : int 1967 1997 3143 3096 4913 2773 2099 2967 1822 1114 ...
## $ Sr : int 587 509 302 179 208 160 107 142 93 86 ...
## $ Cu : int 97 8 5 4 4 3 3 4 4 4 ...
## $ Pb : int 65 43 23 28 29 13 15 25 24 12 ...
## $ Ni : int 14 10 10 5 8 9 3 7 6 7 ...
df[1:5, 1:3] # Muestra la matriz 5 primeras columnas y 10 filas## Abra_alba Abra_nitida Amaena_trilobata
## A1 0 7 1
## A2 0 4 1
## A3 0 18 1
## A4 0 12 0
## B1 1 5 0
nrow(df) # Número de sitios## [1] 24
ncol(df) # Número de especies## [1] 110
dim(df) # Dimensiones de la matriz## [1] 24 110
summary(df) # Estadísticos descriptivos por columna## Abra_alba Abra_nitida Amaena_trilobata Ampharetidae
## Min. :0.0000 Min. : 0.000 Min. :0.000 Min. :0.00000
## 1st Qu.:0.0000 1st Qu.: 0.000 1st Qu.:0.000 1st Qu.:0.00000
## Median :0.0000 Median : 1.000 Median :0.000 Median :0.00000
## Mean :0.9167 Mean : 2.833 Mean :0.125 Mean :0.08333
## 3rd Qu.:1.0000 3rd Qu.: 4.000 3rd Qu.:0.000 3rd Qu.:0.00000
## Max. :6.0000 Max. :18.000 Max. :1.000 Max. :1.00000
## Amphicteis_gunneri Amphipoda Amphiura_filiformis
## Min. :0.0000 Min. : 0.0000 Min. : 0.00
## 1st Qu.:0.0000 1st Qu.: 0.0000 1st Qu.: 0.00
## Median :0.0000 Median : 0.0000 Median : 0.00
## Mean :0.3333 Mean : 0.6667 Mean : 23.83
## 3rd Qu.:0.0000 3rd Qu.: 0.2500 3rd Qu.: 0.25
## Max. :4.0000 Max. :10.0000 Max. :163.00
## Anaitides_groenlandica Anaitides_sp Apistobranchus_tullbergi
## Min. :0.00000 Min. :0.00000 Min. :0.00000
## 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.:0.00000
## Median :0.00000 Median :0.00000 Median :0.00000
## Mean :0.04167 Mean :0.04167 Mean :0.04167
## 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.:0.00000
## Max. :1.00000 Max. :1.00000 Max. :1.00000
## Astropecten_sp Brada_sp Brissopsis_lyrifera
## Min. :0.00000 Min. : 0.000 Min. :0.00000
## 1st Qu.:0.00000 1st Qu.: 0.000 1st Qu.:0.00000
## Median :0.00000 Median : 0.000 Median :0.00000
## Mean :0.04167 Mean : 2.208 Mean :0.08333
## 3rd Qu.:0.00000 3rd Qu.: 1.500 3rd Qu.:0.00000
## Max. :1.00000 Max. :22.000 Max. :1.00000
## Calocaris_macandreae Caulleriella_killariensis Caulleriella_sp
## Min. :0.00000 Min. :0.000 Min. :0.0
## 1st Qu.:0.00000 1st Qu.:0.000 1st Qu.:0.0
## Median :0.00000 Median :0.000 Median :0.0
## Mean :0.04167 Mean :0.125 Mean :0.5
## 3rd Qu.:0.00000 3rd Qu.:0.000 3rd Qu.:0.0
## Max. :1.00000 Max. :3.000 Max. :8.0
## Ceratocephale_loveni Cerianthus_lloydi Chaetoderma_nitidulum
## Min. :0.0000 Min. :0.00 Min. :0.000
## 1st Qu.:0.0000 1st Qu.:0.00 1st Qu.:0.000
## Median :0.0000 Median :0.00 Median :0.000
## Mean :0.2083 Mean :0.50 Mean :0.625
## 3rd Qu.:0.0000 3rd Qu.:0.25 3rd Qu.:1.000
## Max. :2.0000 Max. :4.00 Max. :5.000
## Chaetozone_setosa Chone_sp Corbula_gibba Cossura_longocirrata
## Min. : 0.00 Min. : 0.000 Min. : 0.000 Min. : 0.00
## 1st Qu.: 0.00 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.00
## Median : 0.50 Median : 0.000 Median : 0.000 Median : 0.50
## Mean : 14.88 Mean : 1.292 Mean : 6.958 Mean :11.33
## 3rd Qu.: 18.25 3rd Qu.: 0.500 3rd Qu.:10.000 3rd Qu.:11.50
## Max. :153.00 Max. :12.000 Max. :46.000 Max. :85.00
## Crustacea_indet Cumacea Diplocirrus_glaucus
## Min. :0.00 Min. : 0.000 Min. :0.0000
## 1st Qu.:0.00 1st Qu.: 0.000 1st Qu.:0.0000
## Median :0.00 Median : 0.000 Median :0.0000
## Mean :0.25 Mean : 1.292 Mean :0.7083
## 3rd Qu.:0.00 3rd Qu.: 1.000 3rd Qu.:1.0000
## Max. :2.00 Max. :18.000 Max. :4.0000
## Echinocardium_cordatum Eteone_sp Euchone_analis Euchone_papillosa
## Min. : 0.00 Min. :0.0000 Min. :0.000 Min. :0.00000
## 1st Qu.: 0.00 1st Qu.:0.0000 1st Qu.:0.000 1st Qu.:0.00000
## Median : 0.00 Median :0.0000 Median :0.000 Median :0.00000
## Mean : 3.00 Mean :0.2917 Mean :0.125 Mean :0.08333
## 3rd Qu.: 4.75 3rd Qu.:0.0000 3rd Qu.:0.000 3rd Qu.:0.00000
## Max. :16.00 Max. :3.0000 Max. :2.000 Max. :1.00000
## Glucinde_nordmanni Glycera_alba Glycera_rouxi Golfingia_sp
## Min. :0.00000 Min. :0.0000 Min. :0.0 Min. :0.00000
## 1st Qu.:0.00000 1st Qu.:0.0000 1st Qu.:0.0 1st Qu.:0.00000
## Median :0.00000 Median :0.0000 Median :0.0 Median :0.00000
## Mean :0.04167 Mean :0.7083 Mean :0.5 Mean :0.04167
## 3rd Qu.:0.00000 3rd Qu.:1.0000 3rd Qu.:1.0 3rd Qu.:0.00000
## Max. :1.00000 Max. :3.0000 Max. :3.0 Max. :1.00000
## Goniada_maculata Gyptis_rosea Halicryptus_sp Harmothoe_nodosa
## Min. : 0.000 Min. :0.000 Min. :0.00000 Min. :0.00000
## 1st Qu.: 0.000 1st Qu.:0.000 1st Qu.:0.00000 1st Qu.:0.00000
## Median : 1.000 Median :0.000 Median :0.00000 Median :0.00000
## Mean : 3.167 Mean :0.125 Mean :0.08333 Mean :0.08333
## 3rd Qu.: 4.500 3rd Qu.:0.000 3rd Qu.:0.00000 3rd Qu.:0.00000
## Max. :15.000 Max. :1.000 Max. :1.00000 Max. :2.00000
## Harmothoe_sarsi Harmothoe_sp Hesionidae_
## Min. : 0.0 Min. :0.00000 Min. :0.00000
## 1st Qu.: 0.0 1st Qu.:0.00000 1st Qu.:0.00000
## Median : 0.0 Median :0.00000 Median :0.00000
## Mean : 0.5 Mean :0.08333 Mean :0.04167
## 3rd Qu.: 0.0 3rd Qu.:0.00000 3rd Qu.:0.00000
## Max. :10.0 Max. :2.00000 Max. :1.00000
## Heteromastus_filiformis Holothuroidea Jasmineira_sp Labidoplax_buskii
## Min. : 0.00 Min. :0.0000 Min. :0.00 Min. : 0.00
## 1st Qu.: 0.75 1st Qu.:0.0000 1st Qu.:0.00 1st Qu.: 0.00
## Median : 23.50 Median :0.0000 Median :0.00 Median : 0.00
## Mean : 94.83 Mean :0.8333 Mean :0.25 Mean : 17.46
## 3rd Qu.:176.00 3rd Qu.:1.0000 3rd Qu.:0.00 3rd Qu.: 8.00
## Max. :477.00 Max. :5.0000 Max. :2.00 Max. :120.00
## Lanassa_venusta Laonice_cirrata Leda_pernula Lumbrineris_scopa
## Min. :0.00000 Min. :0.00000 Min. :0.0000 Min. :0.000
## 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.:0.0000 1st Qu.:0.000
## Median :0.00000 Median :0.00000 Median :0.0000 Median :0.000
## Mean :0.04167 Mean :0.08333 Mean :0.2917 Mean :0.375
## 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.:0.0000 3rd Qu.:0.000
## Max. :1.00000 Max. :1.00000 Max. :3.0000 Max. :5.000
## Lumbrineris_sp Lysilla_loveni Maldanidae
## Min. :0.00000 Min. :0.00000 Min. :0.00000
## 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.:0.00000
## Median :0.00000 Median :0.00000 Median :0.00000
## Mean :0.04167 Mean :0.08333 Mean :0.04167
## 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.:0.00000
## Max. :1.00000 Max. :2.00000 Max. :1.00000
## Mediomastus_fragilis Melinna_cristata Mugga_wahlbergi Myriochele_oculata
## Min. :0.000 Min. : 0.000 Min. :0.0000 Min. : 0.00
## 1st Qu.:0.000 1st Qu.: 0.000 1st Qu.:0.0000 1st Qu.: 1.00
## Median :0.000 Median : 1.000 Median :0.0000 Median :13.00
## Mean :1.125 Mean : 3.458 Mean :0.3333 Mean :17.54
## 3rd Qu.:0.250 3rd Qu.: 4.000 3rd Qu.:0.0000 3rd Qu.:25.00
## Max. :8.000 Max. :14.000 Max. :4.0000 Max. :74.00
## Myrtea_spinifera Mysella_bidentata Natica_sp Nemertina_indet
## Min. :0.000 Min. : 0.000 Min. :0.0000 Min. : 0.000
## 1st Qu.:0.000 1st Qu.: 0.000 1st Qu.:0.0000 1st Qu.: 1.750
## Median :0.000 Median : 0.000 Median :0.0000 Median : 5.000
## Mean :1.833 Mean : 1.667 Mean :0.1667 Mean : 7.167
## 3rd Qu.:5.000 3rd Qu.: 0.000 3rd Qu.:0.0000 3rd Qu.: 9.750
## Max. :8.000 Max. :15.000 Max. :2.0000 Max. :40.000
## Nephtys_ciliata Nephtys_incisa Nephtys_paradoxa Nucula_nitida
## Min. :0.0000 Min. :0.00000 Min. :0.00000 Min. : 0.000
## 1st Qu.:0.0000 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.: 0.000
## Median :0.0000 Median :0.00000 Median :0.00000 Median : 0.000
## Mean :0.8333 Mean :0.04167 Mean :0.08333 Mean : 3.667
## 3rd Qu.:1.0000 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.: 6.500
## Max. :6.0000 Max. :1.00000 Max. :1.00000 Max. :23.000
## Nucula_sulcata Nucula_tenuis Oligochaeta Onchnesoma
## Min. :0.0000 Min. : 0.000 Min. :0.000 Min. :0.00000
## 1st Qu.:0.0000 1st Qu.: 0.000 1st Qu.:0.000 1st Qu.:0.00000
## Median :0.0000 Median : 1.500 Median :0.000 Median :0.00000
## Mean :0.9167 Mean : 3.125 Mean :0.125 Mean :0.08333
## 3rd Qu.:0.0000 3rd Qu.: 3.250 3rd Qu.:0.000 3rd Qu.:0.00000
## Max. :7.0000 Max. :20.000 Max. :3.000 Max. :1.00000
## Ophelina_acuminata Ophelina_modesta Ophelina_sp
## Min. :0.00000 Min. :0.000 Min. :0.00000
## 1st Qu.:0.00000 1st Qu.:0.000 1st Qu.:0.00000
## Median :0.00000 Median :0.000 Median :0.00000
## Mean :0.08333 Mean :0.125 Mean :0.04167
## 3rd Qu.:0.00000 3rd Qu.:0.000 3rd Qu.:0.00000
## Max. :2.00000 Max. :1.000 Max. :1.00000
## Ophiodromus_flexuosus Ophisto_indet Orbinia_sertulata
## Min. :0.0000 Min. :0.0000 Min. :0.00000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.00000
## Median :0.0000 Median :0.0000 Median :0.00000
## Mean :0.1667 Mean :0.8333 Mean :0.04167
## 3rd Qu.:0.0000 3rd Qu.:0.2500 3rd Qu.:0.00000
## Max. :2.0000 Max. :6.0000 Max. :1.00000
## Paramphinome_jeffreysii Paraonis_gracilis Paraonis_lyra
## Min. : 0.000 Min. : 0.00 Min. : 0.00
## 1st Qu.: 0.000 1st Qu.: 0.00 1st Qu.: 0.00
## Median : 0.000 Median : 1.00 Median : 2.00
## Mean : 2.125 Mean : 2.50 Mean : 3.75
## 3rd Qu.: 2.250 3rd Qu.: 3.25 3rd Qu.: 6.00
## Max. :15.000 Max. :16.00 Max. :15.00
## Parvicardium_minimum Pectinaria_auricoma Pectinaria_belgica
## Min. :0.0000 Min. :0.00000 Min. :0.00000
## 1st Qu.:0.0000 1st Qu.:0.00000 1st Qu.:0.00000
## Median :0.0000 Median :0.00000 Median :0.00000
## Mean :0.1667 Mean :0.08333 Mean :0.04167
## 3rd Qu.:0.0000 3rd Qu.:0.00000 3rd Qu.:0.00000
## Max. :2.0000 Max. :1.00000 Max. :1.00000
## Pectinaria_koreni Phascolion_strombi Philine_sp Pholoe_minuta
## Min. :0.00000 Min. :0.00000 Min. :0.0000 Min. :0.000
## 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.:0.0000 1st Qu.:0.000
## Median :0.00000 Median :0.00000 Median :0.0000 Median :1.000
## Mean :0.04167 Mean :0.08333 Mean :0.9583 Mean :1.167
## 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.:1.2500 3rd Qu.:2.000
## Max. :1.00000 Max. :1.00000 Max. :5.0000 Max. :4.000
## Phylo_norvegica Pilargis_papillosa Polychaeta_indet Polycirrus_plumosus
## Min. :0.0000 Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.2083 Mean :0.6667 Mean :0.4167 Mean :0.3333
## 3rd Qu.:0.0000 3rd Qu.:0.2500 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :6.0000 Max. :5.0000 Max. :4.0000
## Polydora_antennata Polyphysia_crassa Prionospio_cirrifera
## Min. :0.0000 Min. :0.0000 Min. : 0.00
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.: 0.00
## Median :0.0000 Median :0.0000 Median : 1.00
## Mean :0.3333 Mean :0.4583 Mean :11.67
## 3rd Qu.:0.0000 3rd Qu.:0.0000 3rd Qu.: 2.00
## Max. :4.0000 Max. :5.0000 Max. :87.00
## Prionospio_malmgreni Prionospio_sp Prionospio_steenstrupi
## Min. : 0.000 Min. :0.0000 Min. :0.00000
## 1st Qu.: 3.000 1st Qu.:0.0000 1st Qu.:0.00000
## Median : 5.000 Median :0.0000 Median :0.00000
## Mean : 6.458 Mean :0.5833 Mean :0.04167
## 3rd Qu.:10.000 3rd Qu.:0.0000 3rd Qu.:0.00000
## Max. :18.000 Max. :5.0000 Max. :1.00000
## Proclea_graffii Rhodine_gracilior Rhodine_loveni Sabellidae
## Min. : 0.000 Min. :0.00 Min. : 0.000 Min. :0.00000
## 1st Qu.: 0.000 1st Qu.:0.00 1st Qu.: 0.000 1st Qu.:0.00000
## Median : 0.000 Median :0.00 Median : 0.000 Median :0.00000
## Mean : 2.667 Mean :0.25 Mean : 1.208 Mean :0.08333
## 3rd Qu.: 1.000 3rd Qu.:0.00 3rd Qu.: 1.000 3rd Qu.:0.00000
## Max. :35.000 Max. :2.00 Max. :11.000 Max. :1.00000
## Scalibregma_inflatum Scoloplos_armiger Sosane_gracilis Sosane_sulcata
## Min. :0.0000 Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.2917 Mean :0.9167 Mean :0.5833 Mean :0.1667
## 3rd Qu.:0.2500 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:0.0000
## Max. :2.0000 Max. :4.0000 Max. :4.0000 Max. :2.0000
## Sphaerodorum_flavum Spiophanes_kroyeri Synelmis_klatti
## Min. :0.000 Min. : 0.000 Min. :0.0000
## 1st Qu.:0.000 1st Qu.: 0.000 1st Qu.:0.0000
## Median :0.000 Median : 1.500 Median :1.0000
## Mean :0.125 Mean : 2.917 Mean :0.9583
## 3rd Qu.:0.000 3rd Qu.: 4.250 3rd Qu.:2.0000
## Max. :2.000 Max. :15.000 Max. :4.0000
## Terebellides_stroemi Tharyx_marioni Thracea_papyracea Thyasira_sp
## Min. :0.0000 Min. : 0.000 Min. :0.00000 Min. : 0.00
## 1st Qu.:0.0000 1st Qu.: 0.000 1st Qu.:0.00000 1st Qu.: 1.75
## Median :0.0000 Median : 0.500 Median :0.00000 Median : 6.00
## Mean :0.4167 Mean : 3.125 Mean :0.08333 Mean : 25.38
## 3rd Qu.:1.0000 3rd Qu.: 3.250 3rd Qu.:0.00000 3rd Qu.: 54.50
## Max. :3.0000 Max. :18.000 Max. :2.00000 Max. :102.00
## Trichobranchus_roseus
## Min. :0.000
## 1st Qu.:0.000
## Median :0.000
## Mean :0.125
## 3rd Qu.:0.000
## Max. :1.000
Calculamos el rango de abundancias presentes en la matriz
range(df)## [1] 0 477
Calculamos el rango de abundancias para cada especie
apply(df, 2, range)## Abra_alba Abra_nitida Amaena_trilobata Ampharetidae
## [1,] 0 0 0 0
## [2,] 6 18 1 1
## Amphicteis_gunneri Amphipoda Amphiura_filiformis
## [1,] 0 0 0
## [2,] 4 10 163
## Anaitides_groenlandica Anaitides_sp Apistobranchus_tullbergi
## [1,] 0 0 0
## [2,] 1 1 1
## Astropecten_sp Brada_sp Brissopsis_lyrifera Calocaris_macandreae
## [1,] 0 0 0 0
## [2,] 1 22 1 1
## Caulleriella_killariensis Caulleriella_sp Ceratocephale_loveni
## [1,] 0 0 0
## [2,] 3 8 2
## Cerianthus_lloydi Chaetoderma_nitidulum Chaetozone_setosa Chone_sp
## [1,] 0 0 0 0
## [2,] 4 5 153 12
## Corbula_gibba Cossura_longocirrata Crustacea_indet Cumacea
## [1,] 0 0 0 0
## [2,] 46 85 2 18
## Diplocirrus_glaucus Echinocardium_cordatum Eteone_sp Euchone_analis
## [1,] 0 0 0 0
## [2,] 4 16 3 2
## Euchone_papillosa Glucinde_nordmanni Glycera_alba Glycera_rouxi
## [1,] 0 0 0 0
## [2,] 1 1 3 3
## Golfingia_sp Goniada_maculata Gyptis_rosea Halicryptus_sp
## [1,] 0 0 0 0
## [2,] 1 15 1 1
## Harmothoe_nodosa Harmothoe_sarsi Harmothoe_sp Hesionidae_
## [1,] 0 0 0 0
## [2,] 2 10 2 1
## Heteromastus_filiformis Holothuroidea Jasmineira_sp Labidoplax_buskii
## [1,] 0 0 0 0
## [2,] 477 5 2 120
## Lanassa_venusta Laonice_cirrata Leda_pernula Lumbrineris_scopa
## [1,] 0 0 0 0
## [2,] 1 1 3 5
## Lumbrineris_sp Lysilla_loveni Maldanidae Mediomastus_fragilis
## [1,] 0 0 0 0
## [2,] 1 2 1 8
## Melinna_cristata Mugga_wahlbergi Myriochele_oculata Myrtea_spinifera
## [1,] 0 0 0 0
## [2,] 14 4 74 8
## Mysella_bidentata Natica_sp Nemertina_indet Nephtys_ciliata
## [1,] 0 0 0 0
## [2,] 15 2 40 6
## Nephtys_incisa Nephtys_paradoxa Nucula_nitida Nucula_sulcata
## [1,] 0 0 0 0
## [2,] 1 1 23 7
## Nucula_tenuis Oligochaeta Onchnesoma Ophelina_acuminata
## [1,] 0 0 0 0
## [2,] 20 3 1 2
## Ophelina_modesta Ophelina_sp Ophiodromus_flexuosus Ophisto_indet
## [1,] 0 0 0 0
## [2,] 1 1 2 6
## Orbinia_sertulata Paramphinome_jeffreysii Paraonis_gracilis
## [1,] 0 0 0
## [2,] 1 15 16
## Paraonis_lyra Parvicardium_minimum Pectinaria_auricoma
## [1,] 0 0 0
## [2,] 15 2 1
## Pectinaria_belgica Pectinaria_koreni Phascolion_strombi Philine_sp
## [1,] 0 0 0 0
## [2,] 1 1 1 5
## Pholoe_minuta Phylo_norvegica Pilargis_papillosa Polychaeta_indet
## [1,] 0 0 0 0
## [2,] 4 3 6 5
## Polycirrus_plumosus Polydora_antennata Polyphysia_crassa
## [1,] 0 0 0
## [2,] 4 4 5
## Prionospio_cirrifera Prionospio_malmgreni Prionospio_sp
## [1,] 0 0 0
## [2,] 87 18 5
## Prionospio_steenstrupi Proclea_graffii Rhodine_gracilior
## [1,] 0 0 0
## [2,] 1 35 2
## Rhodine_loveni Sabellidae Scalibregma_inflatum Scoloplos_armiger
## [1,] 0 0 0 0
## [2,] 11 1 2 4
## Sosane_gracilis Sosane_sulcata Sphaerodorum_flavum Spiophanes_kroyeri
## [1,] 0 0 0 0
## [2,] 4 2 2 15
## Synelmis_klatti Terebellides_stroemi Tharyx_marioni Thracea_papyracea
## [1,] 0 0 0 0
## [2,] 4 3 18 2
## Thyasira_sp Trichobranchus_roseus
## [1,] 0 0
## [2,] 102 1
Contamos el número de casos por cada clase de abundancia
(ab <- table(unlist(df)))##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
## 1979 245 92 60 47 36 23 12 13 7 12 5 9 10 10
## 15 16 18 19 20 21 22 23 24 26 27 28 29 31 33
## 7 2 7 4 4 1 1 1 1 1 1 1 1 1 2
## 35 36 38 40 41 44 45 46 51 52 54 55 62 66 68
## 2 3 1 2 1 1 1 1 1 1 1 1 1 1 2
## 69 74 80 81 85 87 93 100 102 118 120 124 125 134 153
## 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 155 163 169 197 205 244 290 295 477
## 1 1 1 1 1 1 1 1 1
ab.df <- as.data.frame(ab)
str(as.data.frame(ab.df))## 'data.frame': 69 obs. of 2 variables:
## $ Var1: Factor w/ 69 levels "0","1","2","3",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Freq: int 1979 245 92 60 47 36 23 12 13 7 ...
ggplot(ab.df, aes(Var1, Freq)) + geom_bar(stat = "identity") + labs(x = "Abundancias",
y = "Frecuencias") + theme_bw() + theme(axis.text.x = element_text(angle = 60,
hjust = 1))Número de ausencias y proporción de ceros presentes en la base de datos
sum(df == 0)## [1] 1979
sum(df == 0)/(nrow(df) * ncol(df))## [1] 0.7496212
Calculamos en número de sitios en que cada especie está presente
spe.pres <- apply(df > 0, 2, sum)Ordenamos los números en orden descendente.
sort(spe.pres)## Anaitides_groenlandica Anaitides_sp
## 1 1
## Apistobranchus_tullbergi Astropecten_sp
## 1 1
## Calocaris_macandreae Caulleriella_killariensis
## 1 1
## Glucinde_nordmanni Golfingia_sp
## 1 1
## Harmothoe_nodosa Harmothoe_sp
## 1 1
## Hesionidae_ Lanassa_venusta
## 1 1
## Lumbrineris_sp Lysilla_loveni
## 1 1
## Maldanidae Nephtys_incisa
## 1 1
## Oligochaeta Ophelina_acuminata
## 1 1
## Ophelina_sp Orbinia_sertulata
## 1 1
## Pectinaria_belgica Pectinaria_koreni
## 1 1
## Prionospio_steenstrupi Thracea_papyracea
## 1 1
## Ampharetidae Brissopsis_lyrifera
## 2 2
## Euchone_analis Euchone_papillosa
## 2 2
## Halicryptus_sp Laonice_cirrata
## 2 2
## Nephtys_paradoxa Onchnesoma
## 2 2
## Pectinaria_auricoma Phascolion_strombi
## 2 2
## Sabellidae Sphaerodorum_flavum
## 2 2
## Amaena_trilobata Caulleriella_sp
## 3 3
## Eteone_sp Gyptis_rosea
## 3 3
## Harmothoe_sarsi Lumbrineris_scopa
## 3 3
## Natica_sp Ophelina_modesta
## 3 3
## Ophiodromus_flexuosus Parvicardium_minimum
## 3 3
## Phylo_norvegica Polydora_antennata
## 3 3
## Sosane_sulcata Trichobranchus_roseus
## 3 3
## Ceratocephale_loveni Nucula_sulcata
## 4 4
## Polycirrus_plumosus Prionospio_sp
## 4 4
## Rhodine_gracilior Amphicteis_gunneri
## 4 5
## Crustacea_indet Jasmineira_sp
## 5 5
## Leda_pernula Mugga_wahlbergi
## 5 5
## Mysella_bidentata Polychaeta_indet
## 5 5
## Polyphysia_crassa Amphipoda
## 5 6
## Amphiura_filiformis Cerianthus_lloydi
## 6 6
## Chone_sp Mediomastus_fragilis
## 6 6
## Ophisto_indet Pilargis_papillosa
## 6 6
## Scalibregma_inflatum Cumacea
## 6 7
## Glycera_rouxi Terebellides_stroemi
## 7 7
## Abra_alba Brada_sp
## 8 8
## Echinocardium_cordatum Holothuroidea
## 8 8
## Myrtea_spinifera Glycera_alba
## 8 9
## Labidoplax_buskii Nephtys_ciliata
## 9 9
## Nucula_nitida Philine_sp
## 9 9
## Proclea_graffii Scoloplos_armiger
## 9 9
## Sosane_gracilis Chaetoderma_nitidulum
## 9 10
## Corbula_gibba Diplocirrus_glaucus
## 10 10
## Paramphinome_jeffreysii Rhodine_loveni
## 11 11
## Chaetozone_setosa Cossura_longocirrata
## 12 12
## Tharyx_marioni Melinna_cristata
## 12 13
## Paraonis_gracilis Synelmis_klatti
## 13 13
## Abra_nitida Goniada_maculata
## 14 14
## Prionospio_cirrifera Nucula_tenuis
## 14 15
## Paraonis_lyra Pholoe_minuta
## 15 15
## Spiophanes_kroyeri Heteromastus_filiformis
## 15 18
## Nemertina_indet Thyasira_sp
## 20 20
## Prionospio_malmgreni Myriochele_oculata
## 21 22
Calculamos el porcentaje de frecuencias y redondeamos a un dígito
spe.relf <- 100 * spe.pres/nrow(df)
round(sort(spe.relf), 1)## Anaitides_groenlandica Anaitides_sp
## 4.2 4.2
## Apistobranchus_tullbergi Astropecten_sp
## 4.2 4.2
## Calocaris_macandreae Caulleriella_killariensis
## 4.2 4.2
## Glucinde_nordmanni Golfingia_sp
## 4.2 4.2
## Harmothoe_nodosa Harmothoe_sp
## 4.2 4.2
## Hesionidae_ Lanassa_venusta
## 4.2 4.2
## Lumbrineris_sp Lysilla_loveni
## 4.2 4.2
## Maldanidae Nephtys_incisa
## 4.2 4.2
## Oligochaeta Ophelina_acuminata
## 4.2 4.2
## Ophelina_sp Orbinia_sertulata
## 4.2 4.2
## Pectinaria_belgica Pectinaria_koreni
## 4.2 4.2
## Prionospio_steenstrupi Thracea_papyracea
## 4.2 4.2
## Ampharetidae Brissopsis_lyrifera
## 8.3 8.3
## Euchone_analis Euchone_papillosa
## 8.3 8.3
## Halicryptus_sp Laonice_cirrata
## 8.3 8.3
## Nephtys_paradoxa Onchnesoma
## 8.3 8.3
## Pectinaria_auricoma Phascolion_strombi
## 8.3 8.3
## Sabellidae Sphaerodorum_flavum
## 8.3 8.3
## Amaena_trilobata Caulleriella_sp
## 12.5 12.5
## Eteone_sp Gyptis_rosea
## 12.5 12.5
## Harmothoe_sarsi Lumbrineris_scopa
## 12.5 12.5
## Natica_sp Ophelina_modesta
## 12.5 12.5
## Ophiodromus_flexuosus Parvicardium_minimum
## 12.5 12.5
## Phylo_norvegica Polydora_antennata
## 12.5 12.5
## Sosane_sulcata Trichobranchus_roseus
## 12.5 12.5
## Ceratocephale_loveni Nucula_sulcata
## 16.7 16.7
## Polycirrus_plumosus Prionospio_sp
## 16.7 16.7
## Rhodine_gracilior Amphicteis_gunneri
## 16.7 20.8
## Crustacea_indet Jasmineira_sp
## 20.8 20.8
## Leda_pernula Mugga_wahlbergi
## 20.8 20.8
## Mysella_bidentata Polychaeta_indet
## 20.8 20.8
## Polyphysia_crassa Amphipoda
## 20.8 25.0
## Amphiura_filiformis Cerianthus_lloydi
## 25.0 25.0
## Chone_sp Mediomastus_fragilis
## 25.0 25.0
## Ophisto_indet Pilargis_papillosa
## 25.0 25.0
## Scalibregma_inflatum Cumacea
## 25.0 29.2
## Glycera_rouxi Terebellides_stroemi
## 29.2 29.2
## Abra_alba Brada_sp
## 33.3 33.3
## Echinocardium_cordatum Holothuroidea
## 33.3 33.3
## Myrtea_spinifera Glycera_alba
## 33.3 37.5
## Labidoplax_buskii Nephtys_ciliata
## 37.5 37.5
## Nucula_nitida Philine_sp
## 37.5 37.5
## Proclea_graffii Scoloplos_armiger
## 37.5 37.5
## Sosane_gracilis Chaetoderma_nitidulum
## 37.5 41.7
## Corbula_gibba Diplocirrus_glaucus
## 41.7 41.7
## Paramphinome_jeffreysii Rhodine_loveni
## 45.8 45.8
## Chaetozone_setosa Cossura_longocirrata
## 50.0 50.0
## Tharyx_marioni Melinna_cristata
## 50.0 54.2
## Paraonis_gracilis Synelmis_klatti
## 54.2 54.2
## Abra_nitida Goniada_maculata
## 58.3 58.3
## Prionospio_cirrifera Nucula_tenuis
## 58.3 62.5
## Paraonis_lyra Pholoe_minuta
## 62.5 62.5
## Spiophanes_kroyeri Heteromastus_filiformis
## 62.5 75.0
## Nemertina_indet Thyasira_sp
## 83.3 83.3
## Prionospio_malmgreni Myriochele_oculata
## 87.5 91.7
Ocurr <- as.data.frame(cbind(spe.pres, spe.relf))
headtail(Ocurr)## spe.pres spe.relf
## Abra_alba 8 33.333333
## Abra_nitida 14 58.333333
## Amaena_trilobata 3 12.500000
## Thracea_papyracea 1 4.166667
## Thyasira_sp 20 83.333333
## Trichobranchus_roseus 3 12.500000
Oc_A <- ggplot(Ocurr, aes(spe.pres)) + geom_histogram() + labs(x = "Ocurrencia de especies",
y = "N° de especies") + theme_bw()
Oc_B <- ggplot(Ocurr, aes(spe.relf)) + geom_histogram() + labs(x = "Frecuencia relativa de espcies",
y = "N° de especies") + theme_bw()
plot_grid(Oc_A, Oc_B, labels = "AUTO", nrow = 1, align = "v")Comparando la riqueza entre sitios, calculamos el número de especies en cada sitio, para sumar por filas, el segundo arumento de apply(), MARGIN es puesto en 1. Luego se orden en orden creciente.
Sitios <- as.factor(rownames(df))
Sitios_num <- as.numeric(as.factor(rownames(df)))
Riqueza <- specnumber(df)
sit.riq <- as.data.frame(Riqueza)
sit.ab <- df %>% mutate(Abundancia = rowSums(.)) %>% select(tail(names(.), 1))
sit.riqab <- cbind(Sitios, Sitios_num, sit.ab, sit.riq)
str(sit.riqab)## 'data.frame': 24 obs. of 4 variables:
## $ Sitios : Factor w/ 24 levels "A1","A2","A3",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Sitios_num: num 1 2 3 4 5 6 7 8 9 10 ...
## $ Abundancia: Named num 143 108 135 150 657 275 404 472 43 323 ...
## ..- attr(*, "names")= chr "A1" "A2" "A3" "A4" ...
## $ Riqueza : int 32 28 37 39 42 21 35 27 14 20 ...
headtail(sit.riqab)## Sitios Sitios_num Abundancia Riqueza
## A1 A1 1 143 32
## A2 A2 2 108 28
## A3 A3 3 135 37
## G2 G2 22 206 21
## G3 G3 23 147 22
## G4 G4 24 115 20
Graficamos
Riq_plot <- ggplot(sit.riqab, aes(Sitios_num, Riqueza)) + geom_point(stat = "identity",
size = 2) + geom_step(stat = "identity", position = "identity") + geom_text(data = sit.riqab,
mapping = aes(x = Sitios_num, y = Riqueza, label = Sitios), angle = 0, hjust = 0,
vjust = -1, size = 3) + labs(x = "Estaciones de muestreo", y = "Riqueza") +
theme_bw() + scale_x_continuous(breaks = NULL)
Ab_plot <- ggplot(sit.riqab, aes(Sitios_num, Abundancia)) + geom_point(stat = "identity",
size = 2) + geom_step(stat = "identity", position = "identity") + geom_text(data = sit.riqab,
mapping = aes(x = Sitios_num, y = Abundancia, label = Sitios), angle = 0,
hjust = 0, vjust = -1, size = 3) + labs(x = "Estaciones de muestreo", y = "Abundancia") +
theme_bw() + scale_x_continuous(breaks = NULL)
plot_grid(Riq_plot, Ab_plot, labels = "AUTO", nrow = 1, align = "v")Calculamos la riqueza por sitio y le añadimos la matriz de identidad para clasificar los sitios (o unidades de muestreo) por zonas y unidades de comparación:
sit_div <- cbind(df_id, Sitios_num, sit.ab, sit.riq)
sit_div## AreaInf Unidad Sitios Sitios_num Abundancia Riqueza
## A1 Directa A A1 1 143 32
## A2 Indirecta A A2 2 108 28
## A3 Directa A A3 3 135 37
## A4 Indirecta A A4 4 150 39
## B1 Directa B B1 5 657 42
## B2 Indirecta B B2 6 275 21
## B3 Directa B B3 7 404 35
## B4 Indirecta B B4 8 472 27
## C1 Directa C C1 9 43 14
## C2 Indirecta C C2 10 323 20
## C3 Directa C C3 11 421 26
## C4 Indirecta C C4 12 866 26
## D1 Directa D D1 13 98 22
## D2 Indirecta D D2 14 270 32
## D3 Directa D D3 15 76 17
## D4 Indirecta D D4 16 236 24
## E1 Directa E E1 17 439 35
## E2 Indirecta E E2 18 582 34
## E3 Directa E E3 19 568 37
## E4 Indirecta E E4 20 466 28
## G1 Directa G G1 21 192 22
## G2 Indirecta G G2 22 206 21
## G3 Directa G G3 23 147 22
## G4 Indirecta G G4 24 115 20
Calculamos la riqueza promedio y la desviación estándar por Área de influencia (Directa e Indirecta) y por Unidad de comparación (A, B, C,D,E y G).
riq_sum <- sit_div %>% group_by(AreaInf, Unidad) %>% summarise(Riq.prom = mean(Riqueza),
Riq.ds = sd(Riqueza))
riq_sum <- as.data.frame(riq_sum)
str(riq_sum)## 'data.frame': 12 obs. of 4 variables:
## $ AreaInf : Factor w/ 2 levels "Directa","Indirecta": 1 1 1 1 1 1 2 2 2 2 ...
## $ Unidad : Factor w/ 6 levels "A","B","C","D",..: 1 2 3 4 5 6 1 2 3 4 ...
## $ Riq.prom: num 34.5 38.5 20 19.5 36 22 33.5 24 23 28 ...
## $ Riq.ds : num 3.54 4.95 8.49 3.54 1.41 ...
Graficamos la riqueza promedio y sus respectivas desviaciones por grupo:
pd <- position_dodge(0.2)
ggplot(riq_sum, aes(Unidad, Riq.prom, color = AreaInf)) + geom_errorbar(aes(ymin = Riq.prom -
Riq.ds, ymax = Riq.prom + Riq.ds), width = 0.2, position = pd) + geom_point(size = 3,
shape = 21, fill = "white", position = pd) + labs(x = "Unidades de muestreo",
y = "Riqueza (N° de especies registradas)") + scale_color_brewer(palette = "Paired") +
theme_bw() + theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
labs(color = "Área de influencia")Calculamos la diversidad de taxones por taxón superior, para ello transponemos la matriz que en principio contiene los sitios como filas y las especies como columnas y las colocamos en el sentido inverso.
df_sp <- as.spacodi(df)
df_sp <- as.data.frame(df_sp)Añadimos a la matriz, la identidad taxonómica de las especies identificadas(Clase, Orden, Familia y Género)
Sitios_sp <- specnumber(df_sp)
Sitios_sp <- as.data.frame(Sitios_sp)
AbXsp <- df_sp %>% mutate(Abundancia = rowSums(.)) %>% select(tail(names(.),
1))
TaxaData <- cbind(df_spID, Sitios_sp, AbXsp)
TaxaData <- as.data.frame(TaxaData)
str(TaxaData)## 'data.frame': 110 obs. of 7 variables:
## $ Clase : Factor w/ 2 levels "Delta","Kappa": 1 1 1 1 1 1 1 1 1 1 ...
## $ Orden : Factor w/ 8 levels "Alfa","Beta",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Familia : Factor w/ 18 levels "A","B","C","D",..: 1 1 1 1 1 1 1 2 2 2 ...
## $ Genero : Factor w/ 88 levels "Abra","Amaena",..: 15 32 56 65 29 36 52 70 2 4 ...
## $ Especie : Factor w/ 110 levels "Abra_alba","Abra_nitida",..: 18 37 68 82 34 43 60 87 3 5 ...
## $ Sitios_sp : int 8 14 3 2 5 6 6 1 1 1 ...
## $ Abundancia: Named num 22 68 3 2 8 16 572 1 1 1 ...
## ..- attr(*, "names")= chr "Abra_alba" "Abra_nitida" "Amaena_trilobata" "Ampharetidae" ...
headtail(TaxaData)## Clase Orden Familia Genero Especie
## Abra_alba Delta Alfa A Cerianthus Cerianthus_lloydi
## Abra_nitida Delta Alfa A Halicryptus Halicryptus_sp
## Amaena_trilobata Delta Alfa A Onchnesoma Onchnesoma
## Thracea_papyracea Kappa Omega R Amphipoda Amphipoda
## Thyasira_sp Kappa Omega R Cumacea Cumacea
## Trichobranchus_roseus Kappa Omega R Crustacea Crustacea_indet
## Sitios_sp Abundancia
## Abra_alba 8 22
## Abra_nitida 14 68
## Amaena_trilobata 3 3
## Thracea_papyracea 1 2
## Thyasira_sp 20 609
## Trichobranchus_roseus 3 3
Calculamos el número de especies por familia (unidad taxonómica más empleada)
Taxa_sum <- TaxaData %>% group_by(Clase, Orden, Familia) %>% count() %>% arrange(desc(n))
Taxa_sum## # A tibble: 18 x 4
## # Groups: Clase, Orden, Familia [18]
## Clase Orden Familia n
## <fct> <fct> <fct> <int>
## 1 Kappa Rho Q 16
## 2 Kappa Gama H 15
## 3 Kappa Rho P 13
## 4 Delta Teta F 8
## 5 Kappa Gama I 8
## 6 Delta Alfa A 7
## 7 Delta Alfa B 6
## 8 Delta Beta C 6
## 9 Delta Beta D 6
## 10 Kappa Gama G 6
## 11 Kappa Omega R 5
## 12 Kappa Rho O 5
## 13 Kappa Iota N 4
## 14 Delta Teta E 1
## 15 Kappa Epsilon J 1
## 16 Kappa Iota K 1
## 17 Kappa Iota L 1
## 18 Kappa Iota M 1
orden_nivel <- as.factor(Taxa_sum$Familia)
orden_nivel## [1] Q H P F I A B C D G R O N E J K L M
## Levels: A B C D E F G H I J K L M N O P Q R
Graficamos las familias por el número de especies registradas.
ggplot(Taxa_sum, aes(factor(Familia, level = orden_nivel), n, group = NA, shape = Clase,
color = Orden)) + geom_step(stat = "identity", position = "identity", color = "Black") +
geom_point(stat = "identity", size = 3) + scale_color_brewer(palette = "Paired") +
labs(x = "Familia", y = "N° de especies") + theme_bw() + theme(axis.text.x = element_text(angle = 60,
hjust = 1))A continuación evaluamos cómo se distribuyen las abundancias y abundancias relativas entre sitios y taxas. Para ello empleamos los datos presentes en el data frame sit_div
str(sit_div)## 'data.frame': 24 obs. of 6 variables:
## $ AreaInf : Factor w/ 2 levels "Directa","Indirecta": 1 2 1 2 1 2 1 2 1 2 ...
## $ Unidad : Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 2 2 2 2 3 3 ...
## $ Sitios : Factor w/ 24 levels "A1","A2","A3",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Sitios_num: num 1 2 3 4 5 6 7 8 9 10 ...
## $ Abundancia: Named num 143 108 135 150 657 275 404 472 43 323 ...
## ..- attr(*, "names")= chr "A1" "A2" "A3" "A4" ...
## $ Riqueza : int 32 28 37 39 42 21 35 27 14 20 ...
ab_sum <- sit_div %>% group_by(AreaInf, Unidad) %>% summarise(Ab.prom = mean(Abundancia),
Ab.ds = sd(Abundancia))
ab_sum <- as.data.frame(ab_sum)
str(ab_sum)## 'data.frame': 12 obs. of 4 variables:
## $ AreaInf: Factor w/ 2 levels "Directa","Indirecta": 1 1 1 1 1 1 2 2 2 2 ...
## $ Unidad : Factor w/ 6 levels "A","B","C","D",..: 1 2 3 4 5 6 1 2 3 4 ...
## $ Ab.prom: num 139 530 232 87 504 ...
## $ Ab.ds : num 5.66 178.9 267.29 15.56 91.22 ...
Graficamos la abundancia promedio por sitio y sus resepctivas desviaciones por grupo.
pd <- position_dodge(0.2)
ggplot(ab_sum, aes(Unidad, Ab.prom, color = AreaInf)) + geom_errorbar(aes(ymin = Ab.prom -
Ab.ds, ymax = Ab.prom + Ab.ds), width = 0.2, position = pd) + geom_point(size = 3,
shape = 21, fill = "white", position = pd) + labs(x = "Unidades de muestreo",
y = "Abundancia (N° de individuos)") + scale_color_brewer(palette = "Paired") +
theme_bw() + theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
labs(color = "Área de influencia")Para graficar la abundancia por familia empleamos el data frame TaxaData.
Taxa_sumAb <- TaxaData %>% group_by(Clase, Orden, Familia) %>% summarise(Abundancia = sum(Abundancia)) %>%
arrange(desc(Abundancia))
Taxa_sumAb## # A tibble: 18 x 4
## # Groups: Clase, Orden [8]
## Clase Orden Familia Abundancia
## <fct> <fct> <fct> <dbl>
## 1 Kappa Gama H 2863
## 2 Delta Beta D 864
## 3 Kappa Rho Q 705
## 4 Kappa Gama I 704
## 5 Kappa Omega R 699
## 6 Delta Alfa A 691
## 7 Kappa Rho P 198
## 8 Kappa Rho O 136
## 9 Delta Teta F 115
## 10 Kappa Gama G 97
## 11 Kappa Epsilon J 88
## 12 Kappa Iota L 75
## 13 Delta Alfa B 59
## 14 Delta Beta C 48
## 15 Kappa Iota K 22
## 16 Delta Teta E 17
## 17 Kappa Iota N 8
## 18 Kappa Iota M 3
orden_nivelAb <- as.factor(Taxa_sumAb$Familia)
orden_nivelAb## [1] H D Q I R A P O F G J L B C K E N M
## Levels: A B C D E F G H I J K L M N O P Q R
Graficamos las familias por la abundancia registrada.
ggplot(Taxa_sumAb, aes(factor(Familia, level = orden_nivelAb), Abundancia, group = NA,
shape = Clase, color = Orden)) + geom_step(stat = "identity", position = "identity",
color = "Black") + geom_point(stat = "identity", size = 3) + scale_color_brewer(palette = "Paired") +
labs(x = "Familia", y = "Abundancia") + theme_bw() + theme(axis.text.x = element_text(angle = 60,
hjust = 1))Calculamos la abundancia relativa, calculando la suma total de abundancias y dividiendo el valor de cada fila por el total de la columna.
Taxa_sumAb <- as.data.frame(Taxa_sumAb)
col_sum <- colSums(select(Taxa_sumAb, "Abundancia"))
Taxa_sumAbRel <- Taxa_sumAb %>% mutate(AbRelativa = Abundancia) %>% mutate_each_(~./col_sum,
vars = c("AbRelativa")) %>% arrange(desc(AbRelativa))
orden_nivelAbRel <- as.factor(Taxa_sumAbRel$Familia)Graficamos familias por abundancia relativa
ggplot(Taxa_sumAbRel, aes(factor(Familia, level = orden_nivelAbRel), AbRelativa,
group = NA, shape = Clase, color = Orden)) + geom_step(stat = "identity",
position = "identity", color = "Black") + geom_point(stat = "identity",
size = 3) + scale_color_brewer(palette = "Paired") + labs(x = "Familia",
y = "Abundancia Relativa") + scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
theme_bw() + theme(axis.text.x = element_text(angle = 60, hjust = 1))Calculamos los principales índices de diversidad y los añadimos a la base de datos de diversidad por sitios sit_div.
N0 <- specnumber(df) # Riqueza
H <- diversity(df) # Índice de entropía de Shannon en base e
Hb2 <- diversity(df, base = 2) # Índice de entropía de Shannon en base 2
N1 <- exp(H) # Diversidad de Shannon (base e)
N1b2 <- 2^Hb2 # Diversidad de Shannon (base 2)
N2 <- diversity(df, "inv") # Diversidad de simpson (número de especies dominantes)
J <- H/log(rowSums(df > 0)) # Equidad de Pielou
E10 <- N1/N0 # Equidad de Shannon
E20 <- N2/N0 # Equidad de Simpson
D <- diversity(df, index = "simpson")
sit_div <- data.frame(sit_div, H, D, Hb2, N1, N1b2, N2, E10, E20, J)Se ha calculado una variedad de índices de diversidad para cada localidad, particularmente se analizan los índices de entropía de Shannon base e H, y el índice de Simpson D. Se recomienda emplear los número de Hill. Además se complementa la base de datos con la riqueza y abundancia para cada estación de monitoreo.
div_sum <- sit_div %>% group_by(AreaInf, Unidad) %>% summarise(Riq.prom = mean(Riqueza),
Riq.ds = sd(Riqueza), Ab.prom = mean(Abundancia), Ab.ds = sd(Abundancia),
H.prom = mean(H), H.ds = sd(H), D.prom = mean(D), D.ds = sd(D))
div_sum <- as.data.frame(div_sum)Graficamos la distribución de los valores de los índices de diversidad de Shannon y Simpson por estación y zona de evaluación.
pd <- position_dodge(0.2)
H_sitios <- ggplot(div_sum, aes(Unidad, H.prom, color = AreaInf)) + geom_errorbar(aes(ymin = H.prom -
H.ds, ymax = H.prom + H.ds), width = 0.2, position = pd) + geom_point(size = 3,
shape = 21, fill = "white", position = pd) + labs(x = "Unidades de muestreo",
y = "Diversidad de Shannon (H')") + scale_color_brewer(palette = "Paired") +
theme_bw() + theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
labs(color = "Área de influencia")
D_sitios <- ggplot(div_sum, aes(Unidad, D.prom, color = AreaInf)) + geom_errorbar(aes(ymin = D.prom -
D.ds, ymax = D.prom + D.ds), width = 0.2, position = pd) + geom_point(size = 3,
shape = 21, fill = "white", position = pd) + labs(x = "Unidades de muestreo",
y = "Diversidad de Simpson (1-D)") + scale_color_brewer(palette = "Paired") +
theme_bw() + theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
labs(color = "Área de influencia")
plot_grid(H_sitios, D_sitios, labels = "AUTO", nrow = 1, align = "v")Fernando Tapia - Especialista en Biodiversidad e Hidrobiología . 07 de Junio de 2019. Última actualización: 2019-07-05