Diplomado: MANEJO DE ECOSISTEMAS MARINOS COSTEROS DEL CARIBE
Programa: Biología — Universidad de La Guajira
Facultad: Ciencias Básicas y Aplicadas
Docente: Cristian Granados-Martínez PhD.
Modalidad: Trabajo colaborativo en grupos de 4 personas
📋 Entregable: Al finalizar el taller, deben completar el documento Word adjunto con los gráficos generados (capturas de pantalla o pegados desde RStudio) y las respuestas a todas las preguntas. Ese documento Word lo exportan como PDF y lo entregan al docente junto con el archivo de código.
Asignen un rol diferente a cada integrante en cada actividad. Los roles rotan en cada sección para que todos practiquen todas las funciones:
| Rol | Responsabilidad |
|---|---|
| 🖥️ Digitador/a | Escribe y ejecuta el código en RStudio |
| 🔍 Revisor/a | Verifica errores y consulta la guía de la Parte 4 |
| 📊 Intérprete | Explica los resultados al grupo |
| 📝 Relator/a | Registra conclusiones y las escribe en el documento Word |
.Rmd con todos los bloques de código
completados y funcionando.html generado con el botón
Knit 🧶| Criterio | Puntos |
|---|---|
| Código correcto y funcional | 25 |
| Cálculo e interpretación de índices | 30 |
| Visualizaciones con formato adecuado | 20 |
| Respuestas en el documento Word (PDF entregable) | 25 |
| Total | 100 |
# Ejecuten este bloque UNA SOLA VEZ para instalar los paquetes
install.packages("vegan")
install.packages("tidyverse")
install.packages("knitr")
install.packages("ggpubr")# Ejecuten este bloque al inicio de cada sesión
library(vegan)
library(tidyverse)
library(knitr)
library(ggpubr)# ── Completen con los nombres reales de su grupo ──────────────────────────────
integrante_1 <- "Nombre completo"
integrante_2 <- "Nombre completo"
integrante_3 <- "Nombre completo"
integrante_4 <- "Nombre completo"
grupo_numero <- 0 # Reemplacen 0 por el número de su grupo
cat("══════════════════════════════════════════════════\n")## ══════════════════════════════════════════════════
## TALLER — DIVERSIDAD ALFA EN ECOSISTEMAS MARINOS
## ══════════════════════════════════════════════════
## Grupo N°: 0
## Integrantes:
## 1. Nombre completo
## 2. Nombre completo
## 3. Nombre completo
## 4. Nombre completo
Los datos de este taller provienen de un inventario de macroinvertebrados y gasterópodos registrados en un ecosistema de manglar del Caribe colombiano. El muestreo se realizó en dos estaciones climáticas:
Este tipo de ecosistema es altamente dinámico y alberga especies con adaptaciones especiales a los cambios de salinidad, nivel del agua y disponibilidad de recursos.
| Especie | Grupo | Nombre común |
|---|---|---|
| Aratus pisonii | Cangrejo | Cangrejo del mangle |
| Callinectes bocourti | Cangrejo | Jaiba |
| Cardisoma guanhumi | Cangrejo | Cangrejo azul / Punto azul |
| Goniopsis cruentata | Cangrejo | Cangrejo rojo de manglar |
| Marisa cornuarietis | Gasterópodo | Caracol cuerno de carnero |
| Minuca vocator | Cangrejo | Cangrejo violinista |
| Polymesoda arctata | Bivalvo | Almeja de manglar |
| Pomacea maculata | Gasterópodo | Caracol manzana |
| Vitta virginea | Gasterópodo | Caracol de manglar |
# ── Matriz de abundancias: filas = estaciones, columnas = especies ─────────────
abundancias <- matrix(
c(161, 3, 44, 55, 0, 212, 4, 27, 48, # Temporada de lluvias
357, 0, 0, 185, 2, 22, 0, 30, 767), # Temporada seca
nrow = 2,
byrow = TRUE,
dimnames = list(
c("Lluvias", "Seca"),
c("Aratus_pisonii", "Callinectes_bocourti", "Cardisoma_guanhumi",
"Goniopsis_cruentata", "Marisa_cornuarietis", "Minuca_vocator",
"Polymesoda_arctata", "Pomacea_maculata", "Vitta_virginea")
)
)
# Visualizar la matriz
kable(abundancias,
caption = "Abundancia de macroinvertebrados por estación climática",
align = "c")| Aratus_pisonii | Callinectes_bocourti | Cardisoma_guanhumi | Goniopsis_cruentata | Marisa_cornuarietis | Minuca_vocator | Polymesoda_arctata | Pomacea_maculata | Vitta_virginea | |
|---|---|---|---|---|---|---|---|---|---|
| Lluvias | 161 | 3 | 44 | 55 | 0 | 212 | 4 | 27 | 48 |
| Seca | 357 | 0 | 0 | 185 | 2 | 22 | 0 | 30 | 767 |
## Total de individuos por estación:
## Lluvias Seca
## 554 1363
##
## Total de individuos por especie (ambas estaciones):
## Aratus_pisonii Callinectes_bocourti Cardisoma_guanhumi
## 518 3 44
## Goniopsis_cruentata Marisa_cornuarietis Minuca_vocator
## 240 2 234
## Polymesoda_arctata Pomacea_maculata Vitta_virginea
## 4 57 815
# ¿Cuántas especies tienen al menos un individuo en cada estación?
cat("\nEspecies presentes en lluvias:", sum(abundancias["Lluvias", ] > 0), "\n")##
## Especies presentes en lluvias: 8
## Especies presentes en seca: 6
¿Cuántos individuos se registraron en total en cada estación? ¿En cuál estación hubo más individuos? ¿Y más especies presentes?
🔄 Asignen roles antes de comenzar esta actividad.
# ── COMPLETEN: creen un gráfico de barras de la riqueza por estación ──────────
# Usen los colores: Lluvias = "#4E9BB9", Seca = "#E07B54"
data.frame(
estacion = names(riqueza),
S = as.numeric(riqueza)
) |>
ggplot(aes(x = VARIABLE_X, y = VARIABLE_Y, fill = VARIABLE_X)) +
geom_col(alpha = 0.85, width = 0.5) +
geom_text(aes(label = S), vjust = -0.5, size = 5, fontface = "bold") +
scale_fill_manual(values = c("Lluvias" = "#4E9BB9", "Seca" = "#E07B54")) +
labs(
title = "TITULO DEL GRAFICO",
x = NULL,
y = "Número de especies (S)"
) +
theme_classic(base_size = 13) +
theme(legend.position = "none")¿Difiere la riqueza de especies entre las dos estaciones? ¿A qué factores ecológicos del ecosistema de manglar podría atribuirse esta diferencia? Mencionen al menos dos factores.
🔄 Roten los roles para esta actividad.
# ── COMPLETEN: reemplacen NOMBRE_INDICE con el objeto que calcularon arriba ───
for (i in seq_along(NOMBRE_INDICE)) {
nivel <- ifelse(NOMBRE_INDICE[i] > 3.0, "Alta diversidad",
ifelse(NOMBRE_INDICE[i] > 1.5, "Diversidad moderada",
"Baja diversidad"))
cat(sprintf(" %-10s H' = %.3f → %s\n",
names(NOMBRE_INDICE)[i], NOMBRE_INDICE[i], nivel))
}¿En qué estación es mayor el índice de Shannon? ¿Coincide con la estación de mayor riqueza? Expliquen por qué Shannon y riqueza pueden dar resultados distintos sobre la diversidad de una comunidad.
🔄 Roten los roles para esta actividad.
# ── COMPLETEN: calculen Simpson y su inverso ──────────────────────────────────
simpson <- diversity(NOMBRE_MATRIZ, index = "INDICE_SIMPSON")
inv_simpson <- diversity(NOMBRE_MATRIZ, index = "INDICE_INV_SIMPSON")
cat("Índice de Gini-Simpson (D):\n")
print(round(simpson, 3))
cat("\nInverso de Simpson (1/D):\n")
print(round(inv_simpson, 2))# ── COMPLETEN: construyan la tabla de índices ─────────────────────────────────
indices <- data.frame(
Estacion = names(riqueza),
S = as.numeric(riqueza),
H = round(as.numeric(SHANNON), 3),
D = round(as.numeric(SIMPSON), 3),
InvD = round(as.numeric(INV_SIMPSON), 2),
J = round(as.numeric(PIELOU), 3)
)
kable(indices,
col.names = c("Estación", "Riqueza (S)", "Shannon (H')",
"Simpson (D)", "Inv. Simpson", "Pielou (J')"),
caption = "Índices de diversidad alfa por estación climática",
align = "c")Observen los valores de equitabilidad de Pielou (J’) en cada estación:
a) ¿En cuál estación las abundancias están mejor distribuidas entre especies?
b) La especie Vitta virginea registró 767 individuos en seca y solo 48 en lluvias. ¿Cómo afecta este patrón al índice de Shannon y a la equitabilidad de la estación seca?
🔄 Roten los roles para esta actividad.
# ── COMPLETEN: calculen el índice de Berger-Parker ───────────────────────────
berger_parker <- apply(NOMBRE_MATRIZ, 1,
function(x) max(x) / sum(x))
especie_dom <- apply(NOMBRE_MATRIZ, 1,
function(x) names(which.max(x)))
dominancia <- data.frame(
Estacion = names(berger_parker),
Especie_dominante = especie_dom,
Berger_Parker = round(berger_parker, 3)
)
kable(dominancia,
col.names = c("Estación", "Especie dominante", "Berger-Parker"),
caption = "Dominancia por estación — Índice de Berger-Parker",
align = "c")# ── COMPLETEN: construyan las curvas de rango-abundancia ─────────────────────
# Reemplacen NOMBRE_MATRIZ y COLORES con los valores correctos
estaciones <- rownames(NOMBRE_MATRIZ)
ra_data <- purrr::map_dfr(estaciones, function(e) {
ab <- sort(NOMBRE_MATRIZ[e, NOMBRE_MATRIZ[e, ] > 0], decreasing = TRUE)
if (length(ab) == 0) return(NULL)
data.frame(
estacion = e,
rango = seq_along(ab),
abundancia = as.numeric(ab),
especie = names(ab)
)
})
ggplot(ra_data, aes(x = rango, y = abundancia,
color = estacion, group = estacion)) +
geom_line(linewidth = 1.2) +
geom_point(size = 3.5) +
geom_text(aes(label = especie), vjust = -0.8, size = 2.8,
check_overlap = TRUE) +
scale_y_log10() +
scale_color_manual(values = c("Lluvias" = "#4E9BB9",
"Seca" = "#E07B54")) +
labs(
title = "TITULO DEL GRAFICO",
subtitle = "Escala logarítmica — cada punto es una especie",
x = "Rango de la especie",
y = "Abundancia (log₁₀)",
color = "Estación"
) +
theme_classic(base_size = 13) +
theme(legend.position = "bottom")Observen la curva de rango-abundancia:
a) ¿Qué especie ocupa el rango 1 (más abundante) en cada estación? ¿Cambia entre lluvias y seca?
b) ¿En cuál estación la curva es más inclinada? ¿Qué indica esto sobre la estructura de dominancia de la comunidad?
c) Callinectes bocourti, Cardisoma guanhumi y Polymesoda arctata solo aparecen en lluvias. ¿Qué condiciones ambientales de la temporada de lluvias podrían favorecer la presencia de estas especies en el manglar?
🔄 Roten los roles para esta actividad.
# Proporciones relativas por estación — este bloque ya está completo
prop <- prop.table(abundancias, margin = 1) * 100
kable(round(prop, 1),
caption = "Abundancia relativa (%) por especie y estación",
align = "c")| Aratus_pisonii | Callinectes_bocourti | Cardisoma_guanhumi | Goniopsis_cruentata | Marisa_cornuarietis | Minuca_vocator | Polymesoda_arctata | Pomacea_maculata | Vitta_virginea | |
|---|---|---|---|---|---|---|---|---|---|
| Lluvias | 29.1 | 0.5 | 7.9 | 9.9 | 0.0 | 38.3 | 0.7 | 4.9 | 8.7 |
| Seca | 26.2 | 0.0 | 0.0 | 13.6 | 0.1 | 1.6 | 0.0 | 2.2 | 56.3 |
# ── COMPLETEN: construyan un gráfico de barras apiladas con las proporciones ──
as.data.frame(prop) |>
rownames_to_column("estacion") |>
pivot_longer(cols = -estacion,
names_to = "especie",
values_to = "porcentaje") |>
ggplot(aes(x = VARIABLE_X, y = VARIABLE_Y, fill = VARIABLE_FILL)) +
geom_col(alpha = 0.85) +
scale_fill_brewer(palette = "Set3") +
labs(
title = "TITULO DEL GRAFICO",
x = NULL,
y = "Abundancia relativa (%)",
fill = "Especie"
) +
theme_classic(base_size = 12) +
theme(legend.position = "right",
legend.text = element_text(face = "italic", size = 9))Con base en el gráfico de barras apiladas:
a) ¿Qué especie representa el mayor porcentaje de la comunidad en la estación seca? ¿Y en lluvias?
b) ¿Qué cambios notorios se observan en la composición relativa de la comunidad entre estaciones? Mencionen al menos tres especies cuya proporción cambie marcadamente.
🌟 Esta actividad integra todos los conceptos del taller. Trabajen en equipo para completarla.
Construyan un único gráfico comparativo que muestre todos los índices calculados (S, H’, D, J’) para las dos estaciones. Usen el código de la Parte 4 de la guía como referencia.
# ── COMPLETEN: construyan el gráfico comparativo de índices ──────────────────
# Pista: usen pivot_longer() para convertir la tabla de índices al formato largo
# y facet_wrap() para dividir por índice
indices |>
pivot_longer(cols = c(S, H, D, J),
names_to = "Indice",
values_to = "Valor") |>
mutate(Indice = recode(Indice,
S = "ETIQUETA_S",
H = "ETIQUETA_H",
D = "ETIQUETA_D",
J = "ETIQUETA_J"
)) |>
ggplot(aes(x = VARIABLE_X, y = VARIABLE_Y, fill = VARIABLE_X)) +
geom_col(alpha = 0.8, width = 0.5) +
facet_wrap(~ Indice, scales = "free_y", ncol = 2) +
scale_fill_manual(values = c("Lluvias" = "#4E9BB9",
"Seca" = "#E07B54")) +
labs(
title = "TITULO DEL GRAFICO",
subtitle = "Ecosistema de manglar — Caribe colombiano",
x = NULL,
y = "Valor del índice"
) +
theme_bw(base_size = 12) +
theme(legend.position = "none",
strip.background = element_rect(fill = "#2C3E50"),
strip.text = element_text(color = "white", face = "bold"))Verifiquen manualmente el índice de Shannon para la estación de lluvias usando la fórmula:
\[H' = -\sum_{i=1}^{S} p_i \ln p_i\]
# ── COMPLETEN: calculen H' manualmente para la estación de lluvias ───────────
# Paso 1: extraer abundancias de lluvias (solo especies presentes)
ab_lluvias <- abundancias["Lluvias", abundancias["Lluvias", ] > 0]
cat("Abundancias en lluvias:\n")
print(ab_lluvias)
# Paso 2: calcular proporciones (pi)
pi_lluvias <- ab_lluvias / sum(ab_lluvias)
cat("\nProporciones (pi):\n")
print(round(pi_lluvias, 4))
# Paso 3: calcular pi * ln(pi) para cada especie
pi_ln_pi <- pi_lluvias * log(pi_lluvias)
cat("\npi × ln(pi) por especie:\n")
print(round(pi_ln_pi, 4))
# Paso 4: sumar y cambiar signo
H_manual <- -sum(pi_ln_pi)
cat("\nH' calculado manualmente:", round(H_manual, 3))
cat("\nH' calculado con diversity():", round(shannon["Lluvias"], 3))
cat("\n¿Coinciden?", isTRUE(all.equal(H_manual, shannon["Lluvias"],
tolerance = 0.001)), "\n")Redacten un párrafo de conclusión (mínimo 120 palabras) que responda:
“Con base en los índices de diversidad alfa calculados, ¿cómo varía la diversidad de la comunidad de macroinvertebrados del manglar entre la temporada de lluvias y la seca? ¿Qué procesos ecológicos o ambientales podrían explicar los patrones observados? ¿En cuál estación consideran que el ecosistema está en mejor estado de conservación y por qué?”
Antes de hacer clic en Knit y entregar, confirmen que: