Introducción

🐸 Contexto del estudio Este informe explora cómo el uso que se le da al suelo afecta la biodiversidad de anfibios dentro de una reserva forestal. Para ello se muestrearon parcelas ubicadas en cuatro tipos de hábitat, ordenados según su grado de intervención humana: bosque primario, bosque secundario, sistema silvopastoril y potrero. En cada una de las 52 parcelas (13 por hábitat) se registraron tres variables: la riqueza de especies, el índice de diversidad de Shannon-Wiener y la altitud del sitio (m.s.n.m.).

52Parcelas

4Tipos de hábitat

13Parcelas por hábitat

3Variables registradas

a. Análisis Exploratorio Univariado

Antes de comparar los hábitats entre sí, conviene entender cómo se comporta cada variable por separado. A continuación se describe individualmente la Riqueza, el Shannon y la Altitud.

Estructura de los datos

load("Biodiversidad.RData")
library(psych)
library(knitr)
library(kableExtra)
library(ggplot2)
library(dplyr)

diccionario <- data.frame(
  Variable = c("Parcela", "Habitat", "Riqueza", "Shannon", "Altitud"),
  Tipo = c("Texto", "Texto", "Numérico", "Numérico", "Numérico"),
  Descripcion = c("Identificador de la parcela de muestreo",
                   "Tipo de hábitat",
                   "Riqueza de especies (número de especies por parcela)",
                   "Índice de diversidad de Shannon",
                   "Altitud de la parcela (m.s.n.m.)")
)

kable(diccionario, caption = "Estructura del conjunto de datos BD_biodiversidad") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Estructura del conjunto de datos BD_biodiversidad
Variable Tipo Descripcion
Parcela Texto Identificador de la parcela de muestreo
Habitat Texto Tipo de hábitat
Riqueza Numérico Riqueza de especies (número de especies por parcela)
Shannon Numérico Índice de diversidad de Shannon
Altitud Numérico Altitud de la parcela (m.s.n.m.)
tabla_describe <- describe(BD_biodiversidad[, c("Riqueza", "Shannon", "Altitud")])

kable(round(tabla_describe, 2),
      caption = "Estadísticos descriptivos",
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE) %>%
  scroll_box(width = "100%")
Estadísticos descriptivos
vars n mean sd median trimmed mad min max range skew kurtosis se
Riqueza 1 52 9.73 4.37 9.50 9.60 5.19 2.00 21.00 19.00 0.28 -0.72 0.61
Shannon 2 52 1.76 0.61 1.85 1.76 0.64 0.67 2.98 2.31 0.04 -0.84 0.08
Altitud 3 52 1243.89 172.71 1254.80 1240.59 215.64 950.90 1600.80 649.90 0.09 -1.26 23.95

La base está completa: 52 parcelas sin datos faltantes, repartidas equitativamente entre los 4 hábitats (13 cada uno). Como las tres variables se miden en escalas muy diferentes —la Riqueza en número de especies, el Shannon entre 0 y 3 aproximadamente, y la Altitud en cientos o miles de m.s.n.m.—, comparar directamente sus desviaciones estándar no sería informativo. Por eso se recurre al coeficiente de variación, que expresa la dispersión de cada variable en términos relativos a su propia media.

Coeficiente de variación

cv <- function(x) (sd(x) / mean(x)) * 100

cv_tabla <- data.frame(
  Variable = c("Riqueza", "Shannon", "Altitud"),
  CV = round(sapply(BD_biodiversidad[, c("Riqueza", "Shannon", "Altitud")], cv), 2)
)

kable(cv_tabla,
      caption = "Coeficiente de variación (%)",
      col.names = c("Variable", "CV (%)"),
      row.names = FALSE,
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Coeficiente de variación (%)
Variable CV (%)
Riqueza 44.92
Shannon 34.44
Altitud 13.88

De las tres, la riqueza de especies es la que más varía entre parcelas (CV ≈ 45%), seguida del índice de Shannon (CV ≈ 34%). La altitud, en cambio, es notablemente más estable (CV ≈ 14%), lo que ya empieza a sugerir que las diferencias de biodiversidad entre parcelas no se explican simplemente por dónde queda cada una en el terreno.

Histogramas

p1 <- ggplot(BD_biodiversidad, aes(x = Riqueza)) +
  geom_histogram(bins = 10, fill = "#234e52", color = "white") +
  theme_minimal() + labs(title = "Riqueza de especies", x = "Riqueza", y = "Frecuencia")

p2 <- ggplot(BD_biodiversidad, aes(x = Shannon)) +
  geom_histogram(bins = 10, fill = "#c1502e", color = "white") +
  theme_minimal() + labs(title = "Índice de Shannon", x = "Shannon", y = "Frecuencia")

p3 <- ggplot(BD_biodiversidad, aes(x = Altitud)) +
  geom_histogram(bins = 10, fill = "#b8862e", color = "white") +
  theme_minimal() + labs(title = "Altitud", x = "Altitud (m.s.n.m.)", y = "Frecuencia")

library(gridExtra)
grid.arrange(p1, p2, p3, ncol = 3)

Riqueza y Altitud se distribuyen de forma aproximadamente simétrica, con un sesgo positivo apenas perceptible; el Shannon, por su parte, es prácticamente simétrico. Ninguno de los tres histogramas muestra una forma bimodal clara, aunque vale aclarar que aquí se están mezclando los cuatro hábitats en un solo gráfico —la dispersión que se ve responde en parte a esa mezcla de grupos distintos, algo que se examina con más detalle en el literal b.

Boxplots (todas las parcelas)

b1 <- ggplot(BD_biodiversidad, aes(y = Riqueza)) +
  geom_boxplot(fill = "#a8c3a1") + theme_minimal() +
  labs(title = "Riqueza") + theme(axis.text.x = element_blank())

b2 <- ggplot(BD_biodiversidad, aes(y = Shannon)) +
  geom_boxplot(fill = "#a8c3a1") + theme_minimal() +
  labs(title = "Shannon") + theme(axis.text.x = element_blank())

b3 <- ggplot(BD_biodiversidad, aes(y = Altitud)) +
  geom_boxplot(fill = "#a8c3a1") + theme_minimal() +
  labs(title = "Altitud") + theme(axis.text.x = element_blank())

grid.arrange(b1, b2, b3, ncol = 3)

Aplicando la regla de 1.5×RIC, ninguna de las tres variables muestra valores atípicos. Es una buena señal: la base está limpia y no hay mediciones extremas que revisar antes de avanzar con el análisis.

Interpretación

🔍 Interpretación

Riqueza (N° de especies): en promedio se registran 9.73 especies por parcela (mediana 9.5), con una desviación estándar de 4.37 (CV ≈ 45%). Esa variabilidad tiene sentido: las parcelas vienen de hábitats con niveles de intervención muy distintos entre sí. La distribución tiene un sesgo positivo leve (skew ≈ 0.30) y no se detectaron valores atípicos.

Shannon: el promedio es de 1.76 (mediana 1.85), con un CV cercano al 34% y una distribución casi perfectamente simétrica (skew ≈ 0.04). Tampoco aquí hay outliers.

Altitud (m.s.n.m.): las parcelas se ubican en promedio a 1243.9 m.s.n.m. (mediana 1254.8). Es, de las tres, la variable más homogénea (CV ≈ 14%), con un sesgo mínimo (skew ≈ 0.10) y sin valores atípicos.

En conjunto, este panorama ya deja entrever algo importante: mientras la Riqueza y el Shannon varían bastante, la Altitud se mantiene relativamente estable. Eso apunta a que la diversidad observada responde más al tipo de hábitat que a un efecto directo de la altitud —una hipótesis que se pone a prueba en el siguiente literal.

b. Análisis Exploratorio Bivariado

📐 Enfoque estadístico En esta sección se comparan la Riqueza y el Shannon entre los cuatro hábitats mediante boxplots agrupados, y se examina si la Altitud se relaciona con la diversidad (Shannon) a través de un diagrama de dispersión y el coeficiente de correlación de Pearson.

Riqueza y Shannon por tipo de hábitat

BD_biodiversidad$Habitat <- factor(BD_biodiversidad$Habitat,
                                    levels = c("Bosque primario", "Bosque secundario",
                                               "Sistema silvopastoril", "Potrero"))

g1 <- ggplot(BD_biodiversidad, aes(x = Habitat, y = Riqueza, fill = Habitat)) +
  geom_boxplot() + theme_minimal() +
  labs(title = "Riqueza de especies por hábitat", x = "", y = "Riqueza") +
  theme(axis.text.x = element_text(angle = 20, hjust = 1), legend.position = "none")

g2 <- ggplot(BD_biodiversidad, aes(x = Habitat, y = Shannon, fill = Habitat)) +
  geom_boxplot() + theme_minimal() +
  labs(title = "Índice de Shannon por hábitat", x = "", y = "Shannon") +
  theme(axis.text.x = element_text(angle = 20, hjust = 1), legend.position = "none")

grid.arrange(g1, g2, ncol = 2)

tabla_grupo <- BD_biodiversidad %>%
  group_by(Habitat) %>%
  summarise(
    n = n(),
    Riqueza_media = round(mean(Riqueza), 2),
    Riqueza_sd = round(sd(Riqueza), 2),
    Shannon_media = round(mean(Shannon), 2),
    Shannon_sd = round(sd(Shannon), 2)
  )

kable(tabla_grupo,
      caption = "Riqueza y Shannon promedio por tipo de hábitat",
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Riqueza y Shannon promedio por tipo de hábitat
Habitat n Riqueza_media Riqueza_sd Shannon_media Shannon_sd
Bosque primario 13 14.77 2.74 2.47 0.38
Bosque secundario 13 11.08 3.01 1.97 0.22
Sistema silvopastoril 13 8.08 2.50 1.60 0.28
Potrero 13 5.00 1.29 1.00 0.24

El patrón es claro y se repite en ambas variables: tanto la Riqueza como el Shannon van bajando a medida que aumenta la intervención del hábitat. Los valores más altos aparecen en el bosque primario, bajan en el bosque secundario, siguen bajando en el sistema silvopastoril y llegan a su mínimo en el potrero. En otras palabras, entre más se interviene un hábitat, menos anfibios diversos se encuentran en él.

Relación entre Altitud y Shannon

ggplot(BD_biodiversidad, aes(x = Altitud, y = Shannon)) +
  geom_point(aes(color = Habitat), size = 2) +
  geom_smooth(method = "lm", se = FALSE, color = "#3a332c", linetype = "dashed") +
  theme_minimal() +
  labs(title = "Shannon vs Altitud", x = "Altitud (m.s.n.m.)", y = "Índice de Shannon")

cor_alt <- cor.test(BD_biodiversidad$Altitud, BD_biodiversidad$Shannon, method = "pearson")

cor_tabla <- data.frame(
  Relacion = "Altitud vs Shannon",
  r = round(cor_alt$estimate, 3),
  p_valor = signif(cor_alt$p.value, 3)
)

kable(cor_tabla,
      caption = "Correlación de Pearson entre Altitud y Shannon",
      row.names = FALSE,
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Correlación de Pearson entre Altitud y Shannon
Relacion r p_valor
Altitud vs Shannon 0.752 0

Interpretación

🔍 Interpretación Los boxplots dejan ver diferencias marcadas y ordenadas entre hábitats, tanto en Riqueza como en Shannon, y siguen exactamente el gradiente esperado: Bosque primario > Bosque secundario > Sistema silvopastoril > Potrero. Esto confirma que el uso que se le da al suelo sí incide sobre la biodiversidad de anfibios que se observa.

Por otro lado, la Altitud muestra una correlación positiva y fuerte con el Shannon (r = 0.752, p < 0.001): a mayor altitud, mayor diversidad. Pero hay que leer este resultado con cuidado. En el diagrama de dispersión, los puntos se agrupan por color (por hábitat) siguiendo ese mismo gradiente altitudinal, lo que sugiere que la correlación podría estar reflejando algo distinto: que los hábitats menos intervenidos —el bosque primario, sobre todo— simplemente se ubican en las zonas más altas de la reserva. Es decir, la altitud y el hábitat están entrelazados, y no puede afirmarse con esta evidencia que la altitud tenga un efecto propio e independiente sobre la diversidad.

c. ANOVA y Postanova

📐 Enfoque estadístico Para confirmar formalmente lo que sugieren los boxplots, se aplica un ANOVA de una vía que evalúa si el Shannon difiere de manera significativa entre los cuatro hábitats. Antes de confiar en ese resultado, se comprueban los supuestos del modelo: normalidad de los residuales (Shapiro-Wilk) y homogeneidad de varianzas (Levene). Si el ANOVA resulta significativo, se complementa con comparaciones post-hoc mediante la prueba de LSD para identificar exactamente entre qué pares de hábitats están las diferencias.

ANOVA de una vía: Shannon ~ Habitat

anova_c <- aov(Shannon ~ Habitat, data = BD_biodiversidad)

anova_tabla <- as.data.frame(summary(anova_c)[[1]])
anova_tabla <- round(anova_tabla, 4)

kable(anova_tabla,
      caption = "Tabla ANOVA: Shannon ~ Habitat",
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Tabla ANOVA: Shannon ~ Habitat
Df Sum Sq Mean Sq F value Pr(>F)
Habitat 3 14.8624 4.9541 60.6112 0
Residuals 48 3.9233 0.0817 NA NA

El resultado es contundente: el tipo de hábitat tiene un efecto altamente significativo sobre el índice de Shannon (F(3,48) = 60.61, p < 0.001). Antes de sacar conclusiones más específicas, hay que confirmar que el modelo sea válido, es decir, que cumpla sus supuestos.

Verificación de supuestos

library(car)

shapiro_res <- shapiro.test(residuals(anova_c))
levene_res <- leveneTest(Shannon ~ Habitat, data = BD_biodiversidad)

supuestos_tabla <- data.frame(
  Prueba = c("Shapiro-Wilk (normalidad)", "Levene (homogeneidad de varianzas)"),
  Estadistico = c(round(shapiro_res$statistic, 4), round(levene_res$`F value`[1], 4)),
  p_valor = c(round(shapiro_res$p.value, 4), round(levene_res$`Pr(>F)`[1], 4))
)

kable(supuestos_tabla,
      caption = "Verificación de supuestos del ANOVA",
      col.names = c("Prueba", "Estadístico", "p-valor"),
      row.names = FALSE,
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Verificación de supuestos del ANOVA
Prueba Estadístico p-valor
Shapiro-Wilk (normalidad) 0.9785 0.4625
Levene (homogeneidad de varianzas) 1.2768 0.2930

✅ Interpretación de supuestos Buenas noticias en ambos frentes: la prueba de Shapiro-Wilk sobre los residuales da un valor-p = 0.463, así que no hay motivo para rechazar el supuesto de normalidad. La prueba de Levene da un valor-p = 0.293, así que tampoco se rechaza la homogeneidad de varianzas entre grupos. Con los dos supuestos en orden, tanto el ANOVA como la prueba post-hoc de LSD quedan respaldados para este conjunto de datos.

Comparaciones Postanova (LSD)

Con el ANOVA significativo y los supuestos cumplidos, el siguiente paso natural es preguntar: ¿entre qué hábitats específicamente hay diferencias? Para responder eso se aplica la prueba post-hoc de LSD.

library(agricolae)
posanova_c <- LSD.test(anova_c, trt = "Habitat")

kable(as.data.frame(posanova_c$statistics),
      caption = "Estadísticos generales del modelo",
      row.names = FALSE,
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Estadísticos generales del modelo
MSerror Df Mean CV t.value LSD
0.0817362 48 1.762308 16.22279 2.010635 0.2254674
kable(as.data.frame(posanova_c$parameters),
      caption = "Parámetros de la prueba LSD",
      row.names = FALSE,
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Parámetros de la prueba LSD
test p.ajusted name.t ntr alpha
Fisher-LSD none Habitat 4 0.05
grupos_tabla <- posanova_c$groups
grupos_tabla$Habitat <- rownames(grupos_tabla)
grupos_tabla <- grupos_tabla[, c("Habitat", "Shannon", "groups")]

kable(grupos_tabla,
      caption = "Agrupamiento LSD — Tipo de hábitat",
      col.names = c("Hábitat", "Shannon promedio", "Grupo"),
      row.names = FALSE,
      table.attr = "class='tabla-verde'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Agrupamiento LSD — Tipo de hábitat
Hábitat Shannon promedio Grupo
Bosque primario 2.467692 a
Bosque secundario 1.974615 b
Sistema silvopastoril 1.603077 c
Potrero 1.003846 d

El resultado del agrupamiento LSD es contundente: cada uno de los cuatro hábitats recibe una letra distinta (a, b, c, d), lo que significa que los cuatro difieren significativamente entre sí. No hay dos hábitats que se comporten igual —hay un gradiente claro y consistente de diversidad que va descendiendo a medida que aumenta la intervención antrópica.

Interpretación

🔍 Interpretación El ANOVA de una vía confirma diferencias altamente significativas en el Shannon según el tipo de hábitat (F(3,48) = 60.61, p < 0.001). Los supuestos del modelo se cumplieron sin problema —normalidad de residuales (Shapiro-Wilk, p = 0.463) y homogeneidad de varianzas (Levene, p = 0.293)—, lo que da plena confianza en el resultado. La prueba post-hoc de LSD, por su parte, muestra que los cuatro hábitats se diferencian entre sí de forma clara: el Bosque primario lidera con la mayor diversidad promedio (Shannon = 2.47), seguido del Bosque secundario (1.97), el Sistema silvopastoril (1.60) y, al final, el Potrero (1.00). En conjunto, esto confirma un efecto negativo, gradual y estadísticamente sólido de la intervención antrópica sobre la biodiversidad de anfibios.

Conclusiones generales

🌿 Conclusiones

  • Sobre el análisis univariado (a): las tres variables se comportan de forma aproximadamente simétrica y sin valores atípicos. Lo más destacable es que la Riqueza (CV ≈ 45%) y el Shannon (CV ≈ 34%) varían mucho más que la Altitud (CV ≈ 14%), una pista temprana de que la biodiversidad no es homogénea entre parcelas, sino que responde a algo más —probablemente el hábitat.

  • Sobre el análisis bivariado (b): esa sospecha se confirma. Tanto la Riqueza como el Shannon caen de forma ordenada a lo largo del gradiente de intervención (Bosque primario > Bosque secundario > Sistema silvopastoril > Potrero). La Altitud sí correlaciona fuerte y positivamente con la diversidad (r = 0.752, p < 0.001), pero todo indica que esa relación está mezclada con el efecto del hábitat, ya que los bosques menos intervenidos ocupan justamente las zonas más altas de la reserva.

  • Sobre el ANOVA (c): el análisis estadístico formal respalda todo lo anterior. El tipo de hábitat genera diferencias altamente significativas en el Shannon (F(3,48) = 60.61, p < 0.001), con ambos supuestos del modelo cumplidos (Shapiro-Wilk, p = 0.463; Levene, p = 0.293). Y las comparaciones post-hoc (LSD) van más allá: no solo hay diferencias, sino que los cuatro hábitats son distintos entre sí, siguiendo el mismo orden decreciente (Bosque primario: 2.47 > Bosque secundario: 1.97 > Sistema silvopastoril: 1.60 > Potrero: 1.00).

  • En síntesis: la intervención antrópica sobre el suelo tiene un efecto negativo, claro y estadísticamente sólido sobre la biodiversidad de anfibios de la reserva. La diversidad se va perdiendo de forma progresiva a medida que se avanza de bosque primario a bosque secundario, a sistema silvopastoril y, finalmente, a potrero. Esto refuerza la importancia de conservar lo que queda de bosque primario y de frenar su conversión hacia sistemas más intervenidos, si se quiere proteger a la anfibiofauna local.

💡 Recomendaciones

  1. Priorizar la conservación y, donde sea posible, la restauración de los fragmentos de bosque primario que quedan en la reserva, dado el fuerte efecto negativo que tiene la intervención antrópica sobre la biodiversidad.
  2. Aclarar si la altitud tiene un efecto propio sobre la diversidad, independiente del hábitat, ajustando un modelo que incluya ambos factores a la vez (por ejemplo, un ANCOVA: Shannon ~ Habitat + Altitud), ya que en este conjunto de datos ambas variables están correlacionadas entre sí.
  3. Replicar el muestreo en otras reservas con gradientes de intervención similares, para comprobar si el patrón encontrado aquí se sostiene en otros contextos y así respaldar recomendaciones de manejo más generales.
  4. Complementar el índice de Shannon con otras métricas de diversidad —como el índice de Simpson o la equidad de Pielou— para darle más solidez a las conclusiones sobre el impacto del uso del suelo.