library(table1)
library(ggplot2)
library(agricolae)
library(car)
library(gridExtra)
library(dplyr)
library(tidyr)
library(knitr)
library(kableExtra)
# Cargar datos y convertir a factor
load("Biodiversidad.RData")
BD_biodiversidad$Habitat <- factor(BD_biodiversidad$Habitat)
Con el fin de evaluar el efecto del uso del suelo sobre la biodiversidad de anfibios en una reserva forestal, se establecieron parcelas de muestreo en cuatro tipos de hábitat que representan un gradiente de intervención antrópica: bosque primario, bosque secundario, sistema silvopastoril y potrero. En cada una de las 52 parcelas (13 por hábitat) se registró la riqueza de especies (número de especies observadas), el índice de diversidad de Shannon–Wiener y la altitud (m.s.n.m.) del sitio de muestreo.
# Tabla de datos
table1(~ Riqueza + Shannon + Altitud,
data = BD_biodiversidad)
| Overall (N=52) |
|
|---|---|
| Riqueza | |
| Mean (SD) | 9.73 (4.37) |
| Median [Min, Max] | 9.50 [2.00, 21.0] |
| Shannon | |
| Mean (SD) | 1.76 (0.607) |
| Median [Min, Max] | 1.85 [0.670, 2.98] |
| Altitud | |
| Mean (SD) | 1240 (173) |
| Median [Min, Max] | 1250 [951, 1600] |
# Histograma de riqueza
ggplot(BD_biodiversidad, aes(x = Riqueza)) +
geom_histogram(aes(y = after_stat(density)),
bins = 10,
fill = "#4C9F70",
color = "white") +
geom_density(color = "#1B5E20", linewidth = 1) +
labs(title = "Distribución de Riqueza",
x = "Número de especies",
y = "Densidad") +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5))
# Histograma de Shannon
ggplot(BD_biodiversidad, aes(x = Shannon)) +
geom_histogram(aes(y = after_stat(density)),
bins = 10,
fill = "#4C9F70",
color = "white") +
geom_density(color = "#1B5E20", linewidth = 1) +
labs(title = "Distribución de Shannon",
x = "Índice de Shannon",
y = "Densidad") +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5))
# Histograma de altitud
ggplot(BD_biodiversidad, aes(x = Altitud)) +
geom_histogram(aes(y = after_stat(density)),
bins = 10,
fill = "#4C9F70",
color = "white") +
geom_density(color = "#1B5E20", linewidth = 1) +
labs(title = "Distribución de Altitud",
x = "Altitud (m s. n. m.)",
y = "Densidad") +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5))
# Bloxplot
largo <- pivot_longer(BD_biodiversidad,
cols = c(Riqueza, Shannon, Altitud), names_to = "Variable", values_to = "Valor")
ggplot(largo, aes(x = "", y = Valor)) +
geom_boxplot(fill = "#A5D6A7",
color = "black",
outlier.color = "#C62828",
outlier.shape = 1,
outlier.size = 2) +
facet_wrap(~Variable, scales = "free") +
labs(title = "Boxplot de las variables",
x = NULL,
y = "Valor") +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
strip.text = element_text(face = "bold", size = 12),
axis.text.x = element_blank())
La riqueza promedio es de 9,73 especies por parcela,con una desviación estándar de 4,37. La mediana fue de 9.5 y el rango va de 2 a 21 especies. Que la desviación estándar sea alta indica que la riqueza varía mucho entre parcelas, no todas tienen una cantidad similar de especies.
El histograma refuerza la idea al mostrar que la distribución tiene dos picos: uno cerca de 6 especies y otro cerca de 14. Esto significa que las parcelas no se comportan de manera homogénea, sino que tienden a agruparse en dos tipos. Esto tiene sentido al pensar que las parcelas poseen condiciones distintas.
El boxplot no muestra valores atípicos, lo que indica que todas las parcelas están dentro de un rango esperado.
El índice de Shannon presentó un promedio de 1,76; con una desviación estándar de 0,61. La mediana fue de 1,85 y el rango va de 0,67 a 2,98. La cercanía entre la media y la mediana sugiere que la distribución es aproximadamente simétrica.
El histograma muestra una forma de campana, con la mayoría de parcelas concentradas entre 1.5 y 2.5. A diferencia de la riqueza, aquí no se observan dos picos separados, sino un solo grupo. Lo que indica que la diversidad varía de forma más continua, sin agruparse en dos extremos.
El boxplot no muestra valores atípicos y la caja es más compacta, lo que confirma que la dispersión es moderada.
La altitud en las parcelas tiene un promedio de 1240 m.s.n.m., con una desviación estándar de 173. La mediana fue de 1250 y un rango que va de 951 a 1600m.
El histograma presenta dos picos: uno alrededor de 1050 m y otro alrededor de 1350 m. Esta bimodalidad indica que las parcelas no están concentradas en un mismo punto y hay presencia de dos rangos altitudinales.
El box plot no muestra valores atípicos. La dispersión relativa es baja comparada con las otras variables.
# Tabla de resumen por habitat
table1(~ Shannon + Riqueza + Altitud | Habitat, data = BD_biodiversidad)
| Bosque primario (N=13) |
Bosque secundario (N=13) |
Potrero (N=13) |
Sistema silvopastoril (N=13) |
Overall (N=52) |
|
|---|---|---|---|---|---|
| Shannon | |||||
| Mean (SD) | 2.47 (0.377) | 1.97 (0.220) | 1.00 (0.240) | 1.60 (0.281) | 1.76 (0.607) |
| Median [Min, Max] | 2.53 [1.73, 2.98] | 2.03 [1.44, 2.27] | 0.980 [0.670, 1.34] | 1.62 [1.14, 2.06] | 1.85 [0.670, 2.98] |
| Riqueza | |||||
| Mean (SD) | 14.8 (2.74) | 11.1 (3.01) | 5.00 (1.29) | 8.08 (2.50) | 9.73 (4.37) |
| Median [Min, Max] | 14.0 [10.0, 21.0] | 12.0 [3.00, 15.0] | 5.00 [2.00, 7.00] | 7.00 [5.00, 13.0] | 9.50 [2.00, 21.0] |
| Altitud | |||||
| Mean (SD) | 1450 (77.5) | 1330 (40.6) | 1040 (50.3) | 1150 (97.9) | 1240 (173) |
| Median [Min, Max] | 1480 [1320, 1600] | 1320 [1250, 1380] | 1040 [951, 1120] | 1140 [1030, 1390] | 1250 [951, 1600] |
La tabla muestra un gradiente claro en la diversidad de anfibios: tanto la riqueza como el índice de Shannon disminuyen conforme aumenta la intervención humana. El bosque primario presenta los valores más altos (≈14,8 especies y Shannon ≈2,47), mientras que el potrero tiene los más bajos (≈5,0 especies y Shannon ≈1,0). El bosque secundario y el sistema silvopastoril ocupan posiciones intermedias.
Este patrón sugiere que la diversidad de anfibios está fuertemente asociada al tipo de hábitat, y que la pérdida de área boscosa reduce la cantidad y uniformidad de especies.
largo2 <- pivot_longer(BD_biodiversidad,
cols = c(Riqueza, Shannon),
names_to = "Variable",
values_to = "Valor")
# Colores por hábitat
paleta <- c(
"Bosque primario" = "#1B5E20", # verde oscuro
"Bosque secundario" = "#7CB342", # verde claro
"Sistema silvopastoril" = "#F9A825", # amarillo
"Potrero" = "#A1662F" # marrón
)
# Abreviaturas
abrev <- c(
"Bosque primario" = "BP",
"Bosque secundario" = "BS",
"Sistema silvopastoril" = "S",
"Potrero" = "P"
)
# Boxplot
ggplot(largo2, aes(x = Habitat, y = Valor, fill = Habitat)) +
geom_boxplot(alpha = 0.8, color = "black") +
facet_wrap(~Variable, scales = "free_y") +
scale_fill_manual(values = paleta,
labels = abrev) +
scale_x_discrete(labels = abrev) +
labs(title = "Riqueza y Shannon por tipo de hábitat",
x = NULL,
y = "Valor",
fill = "Hábitat") +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
strip.text = element_text(face = "bold", size = 12),
legend.position = "bottom")
El boxplot compara la riqueza y la diversidad de Shannon entre los cuatro tipos de hábitat. Se observa un gradiente claro, tanto la riqueza como el Shannon disminuyen conforme aumenta la intervención humana.
Riqueza: El bosque primario (BP) presenta la mediana más alta, seguido del bosque secundario (BS), el sistema silvopastoril (S) y el potrero (P). Las cajas de BP y BS se ubican claramente por encima de las de S y P, y no se traslapan entre sí, lo que sugiere diferencias consistentes entre hábitats.
Shannon: El patrón es similar: BP tiene la mediana más alta, seguido de BS, S y por último P. Al igual que en riqueza, las cajas no se traslapan, lo que refuerza la idea de que la diversidad cambia a lo largo del gradiente de intervención.
Se observan algunos valores atípicos. Sin embargo, estos atípicos reflejan variabilidad natural dentro de los hábitats y no necesariamente errores de muestreo.
# Dispersion altitud vs. shannon
ggplot(BD_biodiversidad, aes(x = Altitud, y = Shannon, color = Habitat)) +
geom_point(size = 2.5) +
geom_smooth(method = "lm", se = FALSE, color = "black") +
scale_color_manual(values = paleta,
labels = abrev) +
labs(title = "Altitud vs. diversidad de Shannon",
x = "Altitud (m s. n. m.)",
y = "Índice de Shannon",
color = "Hábitat") +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "bottom")
El gráfico de dispersión muestra una relación positiva entre altitud y Shannon: a mayor altitud, mayor diversidad. Sin embargo, al categorizar los puntos de colores por hábitat, se observa que los colores se agrupan por zonas: el bosque primario está arriba y a la derecha; el potrero está abajo y a la izquierda.
Esto sugiere que la relación global no es necesariamente causal, la altitud no causa más diversidad por sí sola, sino que los hábitats más conservados están ubicados a mayor altitud. Es decir, la altitud está confundida con el hábitat.
#Correlacion general
cor_pearson <- cor.test (BD_biodiversidad$Altitud, BD_biodiversidad$Shannon)
cor_spearman <- cor.test(BD_biodiversidad$Altitud, BD_biodiversidad$Shannon,
method = "spearman", exact = FALSE)
# Tabla resumen de la correlación global
tabla_cor_global <- data.frame(
Prueba = c("Pearson", "Spearman"),
r = c(round(cor_pearson$estimate, 3),
round(cor_spearman$estimate, 3)),
p_valor = c(format(cor_pearson$p.value, scientific = TRUE, digits = 3),
format(cor_spearman$p.value, scientific = TRUE, digits = 3))
)
kable(tabla_cor_global,
col.names = c("Prueba", "r", "valor-p"),row.names = FALSE, caption = "Correlación global Altitud - Shannon") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE, position = "center") %>%
column_spec(2, width = "3em") %>%
column_spec(3, width = "5em")
| Prueba | r | valor-p |
|---|---|---|
| Pearson | 0.752 | 1.29e-10 |
| Spearman | 0.750 | 1.56e-10 |
#Correlacion de cada habitat
tabla_cor_habitat <- BD_biodiversidad %>%
group_by(Habitat) %>%
summarise(r = cor(Altitud, Shannon),
p_valor = cor.test(Altitud, Shannon)$p.value)
kable(tabla_cor_habitat,
col.names = c("Hábitat", "r", "valor-p"),
digits = 3, row.names = FALSE, caption = "Correlación altitud-Shannon dentro de cada hábitat"
) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE, position = "center") %>%
column_spec(2, width = "3em") %>%
column_spec(3, width = "5em")
| Hábitat | r | valor-p |
|---|---|---|
| Bosque primario | -0.328 | 0.274 |
| Bosque secundario | -0.005 | 0.986 |
| Potrero | 0.034 | 0.912 |
| Sistema silvopastoril | -0.513 | 0.073 |
Existe una correlación global positiva y significativa entre altitud y Shannon (r ≈ 0.75; p < 0.001). La altitud explica aproximadamente el 56% de la variación en la diversidad. Spearman confirma el resultado, lo que indica que la relación no depende de valores extremos.
Sin embargo, al calcular la correlación dentro de cada hábitat, la relación altitud-Shannon desaparece, los valores de r son bajos o negativos, y ninguno es significativo (todos p > 0.05). Esto confirma que la correlación global era un efecto del hábitat, no de la altitud.
En conclusión, no es que la altitud aumente la diversidad, sino que los hábitats más conservados están ubicados a mayor altitud y, al mismo tiempo, tienen mayor diversidad.
modelo <- aov(Shannon ~ Habitat, data = BD_biodiversidad)
anova_res <- summary(modelo)[[1]]
tabla_anova <- data.frame(
Fuente = rownames(anova_res),
gl = anova_res$Df,
`Suma de cuadrados` = round(anova_res$`Sum Sq`, 3),
`Cuadrado medio` = round(anova_res$`Mean Sq`, 3),
F = round(anova_res$`F value`, 2),
`p-valor` = format(anova_res$`Pr(>F)`, scientific = TRUE, digits = 3)
)
kable(tabla_anova,
row.names = FALSE,
col.names = c("Fuente", "Grad. libertad", "Suma Cuadrados", "Cuadrado Medio", "F", "valor p")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE, position = "center")
| Fuente | Grad. libertad | Suma Cuadrados | Cuadrado Medio | F | valor p |
|---|---|---|---|---|---|
| Habitat | 3 | 14.862 | 4.954 | 60.61 | 2.38e-16 |
| Residuals | 48 | 3.923 | 0.082 | NA | NA |
ANOVA de una vía: Se evaluó si el índice de Shannon difiere entre los cuatro hábitats. El modelo resultó altamente significativo: F(3, 48) = 60.61; p = 2.38 × 10⁻16. Se rechaza la hipótesis nula de igualdad de medias, lo que indica que al menos un habitat difiere de los demás.
#Supuestos
res <- residuals(modelo)
# Shapiro-Wilk
shap <- shapiro.test(res)
# Levene
library(car)
lev <- leveneTest(Shannon ~ Habitat, data = BD_biodiversidad)
# Tabla resumen
tabla_supuestos <- data.frame(
Prueba = c("Shapiro-Wilk (normalidad)", "Levene (homogeneidad)"),
Estadistico = c(round(shap$statistic, 4), round(lev$`F value`[1], 3)),
`p-valor` = c(format(shap$p.value, digits = 3),
format(lev$`Pr(>F)`[1], digits = 3)),
Decision = c("No se rechaza (cumple el supuesto)",
"No se rechaza (cumple el supuesto)")
)
kable(tabla_supuestos,
row.names = FALSE,
col.names = c("Prueba", "Estadístico", "valor p", "Decisión")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE, position = "center")
| Prueba | Estadístico | valor p | Decisión |
|---|---|---|---|
| Shapiro-Wilk (normalidad) | 0.9785 | 0.463 | No se rechaza (cumple el supuesto) |
| Levene (homogeneidad) | 1.2770 | 0.293 | No se rechaza (cumple el supuesto) |
Supuestos: Los residuales son compatibles con una distribución normal (Shapiro-Wilk: W = 0.978; p = 0.463), y las varianzas son homogéneas entre hábitats (Levene: F = 1.277; p = 0.293). Ambos supuestos se cumplen.
#Post anova
# Post anova
lsd <- LSD.test(modelo, "Habitat", p.adj = "none", console = FALSE)
medias <- lsd$means
letras <- lsd$groups
# Ordenar por media (de mayor a menor)
orden <- order(-medias$Shannon)
medias <- medias[orden, ]
letras <- letras[orden, ]
tabla_lsd <- data.frame(
Habitat = rownames(medias),
Media = round(medias$Shannon, 2),
DE = round(medias$std, 2),
Grupo_LSD = letras$groups
)
kable(tabla_lsd,
row.names = FALSE,
col.names = c("Hábitat", "Media de Shannon", "DE", "LSD")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE, position = "center")
| Hábitat | Media de Shannon | DE | LSD |
|---|---|---|---|
| Bosque primario | 2.47 | 0.38 | a |
| Bosque secundario | 1.97 | 0.22 | b |
| Sistema silvopastoril | 1.60 | 0.28 | d |
| Potrero | 1.00 | 0.24 | c |
Comparaciones post-hoc (LSD): Los cuatro hábitats difieren significativamente entre sí (letras distintas): bosque primario (2.47, a) > bosque secundario (1.97, b) > sistema silvopastoril (1.60, c) > potrero (1.00, d). La diferencia mínima significativa fue de 0.225, y todas las diferencias entre pares la superan.
La diversidad de anfibios disminuye de manera escalonada al aumentar la intervención humana. El bosque primario conserva la mayor diversidad, mientras que el potrero presenta la menor. El bosque secundario y el sistema silvopastoril representan estados intermedios, lo que sugiere que la regeneración forestal y los sistemas con cobertura arbórea amortiguan parcialmente la pérdida de diversidad, pero no sustituyen al bosque primario como refugio de anfibios.