El presente informe contiene el desarrollo del primer punto del
parcial 1 del curso de Bioestadística, asociado a una base de datos
independiente (Salinidad.RData). Para esto, se realiza un
análisis exploratorio y un análisis de varianza (ANOVA) con su
respectiva prueba post-ANOVA. El experimento estudia la relación entre
características del suelo con la producción de biomasa de 45 plantas,
registrando los datos relacionados con las propiedades del suelo en el
que crecían, como pH, Salinidad, Zinc y Potasio (covariables).
load("C:/Users/USUARIO/Desktop/bioestadistica/Salinidad.RData")
str(Salinidad)
## 'data.frame': 45 obs. of 5 variables:
## $ Biomasa : num 765 954 828 755 896 ...
## $ pH : num 5 4.7 4.2 4.4 5.55 5.5 4.25 4.45 4.75 4.6 ...
## $ Salinidad: int 33 35 32 30 33 33 36 30 38 30 ...
## $ Zinc : num 16.5 14 15.3 17.3 22.3 ...
## $ Potasio : num 1442 1299 1154 1045 522 ...
kable(head(Salinidad), caption = "Primeras filas de la base Salinidad")
| Biomasa | pH | Salinidad | Zinc | Potasio |
|---|---|---|---|---|
| 765.280 | 5.00 | 33 | 16.4524 | 1441.67 |
| 954.017 | 4.70 | 35 | 13.9852 | 1299.19 |
| 827.686 | 4.20 | 32 | 15.3276 | 1154.27 |
| 755.072 | 4.40 | 30 | 17.3128 | 1045.15 |
| 896.176 | 5.55 | 33 | 22.3312 | 521.62 |
| 1422.836 | 5.50 | 33 | 12.2778 | 1273.02 |
Se calculan estadísticos descriptivos para la biomasa y cada una de las covariables, y se visualiza su distribución mediante histogramas y diagramas de caja.
resumen_univ <- data.frame(
Variable = names(Salinidad),
Media = sapply(Salinidad, mean),
Mediana = sapply(Salinidad, median),
DE = sapply(Salinidad, sd),
CV_pct = round(sapply(Salinidad, sd) / sapply(Salinidad, mean) * 100, 1),
Min = sapply(Salinidad, min),
Max = sapply(Salinidad, max)
)
kable(resumen_univ, digits = 2, row.names = FALSE,
caption = "Estadísticos descriptivos univariados")
| Variable | Media | Mediana | DE | CV_pct | Min | Max |
|---|---|---|---|---|---|---|
| Biomasa | 1082.17 | 991.83 | 546.29 | 50.5 | 369.82 | 2337.33 |
| pH | 4.61 | 4.45 | 1.25 | 27.2 | 3.20 | 7.45 |
| Salinidad | 30.27 | 30.00 | 3.72 | 12.3 | 24.00 | 38.00 |
| Zinc | 17.83 | 19.24 | 8.27 | 46.4 | 0.21 | 31.29 |
| Potasio | 797.38 | 773.30 | 297.58 | 37.3 | 350.73 | 1441.67 |
vars <- names(Salinidad)
plots_hist <- lapply(vars, function(v) {
ggplot(Salinidad, aes(x = .data[[v]])) +
geom_histogram(fill = "blue", color = "white", bins = 12) +
labs(title = v, x = v, y = "Frecuencia") +
theme_minimal()
})
gridExtra::grid.arrange(grobs = plots_hist, ncol = 2)
plots_box <- lapply(vars, function(v) {
ggplot(Salinidad, aes(y = .data[[v]])) +
geom_boxplot(fill = "green") +
labs(title = v, y = v) +
theme_minimal() +
theme(axis.text.x = element_blank())
})
gridExtra::grid.arrange(grobs = plots_box, ncol = 2)
Interpretación - La biomasa presenta una media cercana a 1082 g con una desviación estándar alta (~546 g) y un coeficiente de variación superior al 50%, lo que indica una gran heterogeneidad entre las muestras; su histograma muestra una ligera asimetría hacia la derecha, con algunas muestras de biomasa muy alta. - El pH varía entre 3.2 y 7.45 (suelos de ácidos a cercanos a neutros), con una distribución que se aleja algo de la normalidad. - La salinidad se concentra entre 24 y 38, con una distribución relativamente simétrica y poca dispersión relativa (CV bajo), lo que sugiere que los ambientes muestreados no difieren dramáticamente en este atributo. - El zinc muestra el rango más amplio en términos relativos (de valores cercanos a 0 hasta ~31) - El potasio también presenta alta variabilidad, con una posible asimetría derecha. En general, ninguna de las variables está libre de asimetría, lo cual deberá tenerse en cuenta más adelante al evaluar supuestos de normalidad.
p1 <- ggplot(Salinidad, aes(x = pH, y = Biomasa)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Biomasa vs. pH") + theme_minimal()
p2 <- ggplot(Salinidad, aes(x = Salinidad, y = Biomasa)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Biomasa vs. Salinidad") + theme_minimal()
p3 <- ggplot(Salinidad, aes(x = Zinc, y = Biomasa)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Biomasa vs. Zinc") + theme_minimal()
gridExtra::grid.arrange(p1, p2, p3, ncol = 3)
cor_biomasa <- sapply(Salinidad[, c("pH", "Salinidad", "Zinc")],
function(x) cor(x, Salinidad$Biomasa))
kable(data.frame(Covariable = names(cor_biomasa),
Correlacion_con_Biomasa = round(cor_biomasa, 3)),
row.names = FALSE,
caption = "Coeficientes de correlación de Pearson con la Biomasa")
| Covariable | Correlacion_con_Biomasa |
|---|---|
| pH | 0.928 |
| Salinidad | -0.067 |
| Zinc | -0.781 |
Interpretación De las tres covariables evaluadas, el pH es la que presenta la relación más fuerte con la biomasa (correlación positiva y alta), es decir, a mayor pH del suelo (suelos menos ácidos) se observa mayor producción de biomasa. El Zinc muestra una relación negativa moderada-alta con la biomasa: a mayor concentración de zinc, menor biomasa, lo que podría reflejar un efecto de fitotoxicidad a concentraciones elevadas de este micronutriente. En contraste, la Salinidad prácticamente no muestra relación lineal con la biomasa (correlación cercana a cero), lo cual es un resultado relevante para el contexto del problema: dentro del rango de salinidad muestreado, esta variable no parece ser un factor limitante importante para la producción de biomasa de esta especie forrajera. Por lo tanto, la variable seleccionada para categorizar y evaluar mediante ANOVA en el literal (c) es el pH, por ser la que presenta la mayor asociación con la biomasa.
Se categoriza el pH en tres niveles (Bajo / Medio / Alto) utilizando los terciles de su distribución (percentiles 33.3% y 66.7%), de manera que cada grupo cuenta con un número de observaciones similar (15 muestras por nivel), lo cual favorece la validez del ANOVA.
terciles <- quantile(Salinidad$pH, probs = c(1/3, 2/3))
Salinidad$pH_nivel <- cut(Salinidad$pH,
breaks = c(-Inf, terciles[1], terciles[2], Inf),
labels = c("Bajo", "Medio", "Alto"))
kable(as.data.frame(table(Salinidad$pH_nivel)),
col.names = c("Nivel de pH", "n"),
caption = "Distribución de muestras por nivel de pH (terciles)")
| Nivel de pH | n |
|---|---|
| Bajo | 15 |
| Medio | 15 |
| Alto | 15 |
ggplot(Salinidad, aes(x = pH_nivel, y = Biomasa, fill = pH_nivel)) +
geom_boxplot() +
scale_fill_manual(values = c("Bajo" = "orange", "Medio" = "pink", "Alto" = "purple")) +
labs(title = "Biomasa según nivel de pH", x = "Nivel de pH", y = "Biomasa (g)") +
theme_minimal() +
theme(legend.position = "none")
\[H_0: \mu_{Bajo} = \mu_{Medio} = \mu_{Alto} \quad \text{(la biomasa media es igual en los tres niveles de pH)}\] \[H_1: \text{al menos una media difiere de las demás}\]
Se trabaja con un nivel de significancia \(\alpha = 0.05\).
modelo <- aov(Biomasa ~ pH_nivel, data = Salinidad)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## pH_nivel 2 7712683 3856342 29.89 8.45e-09 ***
## Residuals 42 5418235 129006
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Antes de confiar en el resultado del ANOVA se deben verificar sus dos supuestos principales:
En ambos casos, si \(p > 0.05\) no se rechaza \(H_0\) y el supuesto se considera razonablemente cumplido.
# Normalidad de los residuales
shapiro.test(residuals(modelo))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo)
## W = 0.97316, p-value = 0.3749
# Homogeneidad de varianzas
leveneTest(Biomasa ~ pH_nivel, data = Salinidad)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 8.6753 0.000702 ***
## 42
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
par(mfrow = c(1, 2))
qqnorm(residuals(modelo)); qqline(residuals(modelo), col = "red")
plot(fitted(modelo), residuals(modelo), xlab = "Ajustados", ylab = "Residuales",
main = "Residuales vs. ajustados")
abline(h = 0, lty = 2, col = "red")
par(mfrow = c(1, 1))
Interpretación de supuestos La prueba de Shapiro-Wilk sobre los residuales no rechaza la normalidad (p = 0.375 > 0.05), y el gráfico Q-Q respalda esta lectura al no mostrar desviaciones importantes respecto a la recta teórica. Sin embargo, la prueba de Levene sí rechaza la homogeneidad de varianzas entre los tres niveles de pH (p = 0.0007 < 0.05): la variabilidad de la biomasa crece con el nivel de pH (DE ≈ 165 g en “Bajo” frente a ≈ 548 g en “Alto”), lo cual también se aprecia en el gráfico de residuales vs. ajustados como un patrón de “abanico” (mayor dispersión de residuales en los valores ajustados más altos). Es decir, el supuesto de normalidad se cumple, pero el de homogeneidad de varianzas se viola. Aun así, se procede con el ANOVA y la prueba LSD según lo solicitado en el enunciado, dejando constancia de esta limitación: una alternativa más robusta ante varianzas heterogéneas sería un ANOVA de Welch o una transformación logarítmica de la biomasa, que podría explorarse como análisis complementario.
Dado que el ANOVA resulta significativo (p < 0.001), se realiza la comparación post-hoc de Fisher (LSD) para identificar entre qué niveles de pH difiere la biomasa.
lsd <- LSD.test(modelo, "pH_nivel", console = TRUE)
##
## Study: modelo ~ "pH_nivel"
##
## LSD t Test for Biomasa
##
## Mean Square Error: 129005.6
##
## pH_nivel, means and individual ( 95 %) CI
##
## Biomasa std r se LCL UCL Min Max
## Alto 1605.3853 547.6014 15 92.7382 1418.2321 1792.5386 765.280 2337.326
## Bajo 593.0233 164.8299 15 92.7382 405.8701 780.1766 369.823 977.515
## Medio 1048.1093 244.9093 15 92.7382 860.9560 1235.2625 568.455 1491.276
## Q25 Q50 Q75
## Alto 1200.2575 1422.836 2192.560
## Bajo 481.3520 545.538 659.713
## Medio 890.8515 1039.637 1198.396
##
## Alpha: 0.05 ; DF Error: 42
## Critical Value of t: 2.018082
##
## least Significant Difference: 264.6747
##
## Treatments with the same letter are not significantly different.
##
## Biomasa groups
## Alto 1605.3853 a
## Medio 1048.1093 b
## Bajo 593.0233 c
plot(lsd, main = "Comparación LSD de la Biomasa por nivel de pH")
Conclusión El ANOVA de una vía muestra que el nivel de pH del suelo genera diferencias estadísticamente significativas en la producción de biomasa (p < 0.001). La prueba de LSD indica que los tres niveles de pH (Bajo, Medio y Alto) difieren significativamente entre sí (grupos con letras distintas: a, b, c), con una tendencia clara: a medida que aumenta el pH del suelo, aumenta la biomasa producida por la planta forrajera. Esto es consistente con lo observado en el análisis bivariado del literal (b), donde el pH fue la covariable con mayor correlación con la biomasa. En términos del contexto biológico, estos resultados sugieren que la acidez del suelo es una limitante importante para la producción de esta especie forrajera, mientras que, dentro del rango muestreado, la salinidad no constituye un factor determinante de la biomasa.