require(ggplot2) # gráficas
require(table1) # tablas descriptivas
require(agricolae) # diseños experimentales y pruebas post-hoc
Este informe analiza el consumo de oxígeno (cons_o) en
moluscos, según el tipo de molusco (molusco) y la
concentración de agua de mar (c_agua). Se realiza primero
una exploración univariada y bivariada de los datos, y posteriormente un
ANOVA de dos vías para evaluar el efecto de ambos factores (y su
interacción) sobre el consumo de oxígeno.
Nota: ajusta la ruta de
load()a la ubicación del archivomoluscos.RDataen tu computador. Importante: si copias una ruta de Windows (que usa\), R la interpretará como caracteres de escape y dará error (por ejemplo'\U' used without hex digits). Usa barras normales/en vez de\, por ejemplo:"C:/Users/laura/OneDrive - PUJ Cali/Documentos/bioestadistica/moluscos.RData".
load("C:/Users/laura/OneDrive - PUJ Cali/Documentos/bioestadistica/moluscos.RData") # ajustar ruta según corresponda (usar "/" en vez de "\")
BD_moluscos$molusco <- factor(BD_moluscos$molusco)
BD_moluscos$c_agua <- factor(BD_moluscos$c_agua, levels = c(50, 75, 100))
Resumen descriptivo de las variables de interés:
table1(~ cons_o + molusco + c_agua, data = BD_moluscos)
| Overall (N=48) |
|
|---|---|
| cons_o | |
| Mean (SD) | 9.30 (3.68) |
| Median [Min, Max] | 9.70 [1.80, 18.8] |
| molusco | |
| A | 24 (50.0%) |
| B | 24 (50.0%) |
| c_agua | |
| 50 | 16 (33.3%) |
| 75 | 16 (33.3%) |
| 100 | 16 (33.3%) |
Distribución del consumo de oxígeno:
ggplot(data = BD_moluscos, aes(x = cons_o)) +
geom_histogram() +
labs(title = "Distribución del consumo de oxígeno",
x = "Consumo de O2 (por g de peso seco)",
y = "Frecuencia")
Consumo de oxígeno estratificado por tipo de molusco y concentración de agua:
table1(~ cons_o | molusco + c_agua, data = BD_moluscos)
A |
B |
Overall |
|||||||
|---|---|---|---|---|---|---|---|---|---|
| 50 (N=8) |
75 (N=8) |
100 (N=8) |
50 (N=8) |
75 (N=8) |
100 (N=8) |
50 (N=16) |
75 (N=16) |
100 (N=16) |
|
| cons_o | |||||||||
| Mean (SD) | 12.2 (3.09) | 7.89 (2.74) | 9.94 (2.75) | 12.3 (3.52) | 6.10 (2.74) | 7.41 (2.84) | 12.3 (3.20) | 6.99 (2.80) | 8.67 (3.00) |
| Median [Min, Max] | 11.1 [9.74, 18.8] | 7.18 [5.20, 13.2] | 9.30 [6.78, 14.0] | 12.9 [6.38, 17.7] | 5.60 [1.80, 9.96] | 6.14 [3.68, 11.6] | 11.5 [6.38, 18.8] | 6.43 [1.80, 13.2] | 8.60 [3.68, 14.0] |
ggplot(data = BD_moluscos, aes(x = c_agua, y = cons_o, fill = molusco)) +
geom_boxplot() +
labs(title = "Consumo de O2 según concentración de agua y tipo de molusco",
x = "Concentración agua de mar",
y = "Consumo de O2 (por g de peso seco)",
fill = "Molusco")
ggplot(data = BD_moluscos, aes(y = cons_o, x = molusco, fill = molusco)) +
geom_boxplot() +
labs(title = "Consumo de O2 según tipo de molusco",
x = "Molusco", y = "Consumo de O2")
ggplot(data = BD_moluscos, aes(y = cons_o, x = c_agua, fill = c_agua)) +
geom_boxplot() +
labs(title = "Consumo de O2 según concentración de agua",
x = "Concentración de agua de mar", y = "Consumo de O2")
El modelo evaluado es cons_o ~ molusco * c_agua, el cual
permite probar tres efectos: el efecto principal de
molusco, el efecto principal de c_agua, y el
efecto de la interacción entre ambos factores.
Efecto principal de molusco
Efecto principal de c_agua
Efecto de interacción molusco × c_agua
En los tres casos se rechaza \(H_0\) si el valor-p asociado es menor a un nivel de significancia \(\alpha = 0.05\).
anova <- aov(cons_o ~ molusco * c_agua, data = BD_moluscos)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## molusco 1 23.2 23.23 2.651 0.111
## c_agua 2 230.8 115.41 13.171 3.63e-05 ***
## molusco:c_agua 2 15.4 7.68 0.876 0.424
## Residuals 42 368.0 8.76
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Antes de interpretar el ANOVA es necesario verificar sus supuestos: normalidad de los residuos y homogeneidad de varianzas.
Normalidad de los residuos (prueba de Shapiro-Wilk)
shapiro.test(residuals(anova))
##
## Shapiro-Wilk normality test
##
## data: residuals(anova)
## W = 0.95824, p-value = 0.08571
Homogeneidad de varianzas (prueba de Bartlett)
bartlett.test(cons_o ~ interaction(molusco, c_agua), data = BD_moluscos)
##
## Bartlett test of homogeneity of variances
##
## data: cons_o by interaction(molusco, c_agua)
## Bartlett's K-squared = 0.71218, df = 5, p-value = 0.9823
Si alguno de estos supuestos no se cumple (valor-p < 0.05), los resultados del ANOVA deben interpretarse con cautela y podría ser necesario considerar una transformación de la variable de respuesta o una prueba no paramétrica.
Si el ANOVA indica diferencias significativas para el factor
c_agua, se realiza la prueba de comparación múltiple de
Fisher (LSD) para identificar entre qué niveles se encuentran dichas
diferencias.
LSD.test(anova, trt = "c_agua", console = TRUE)
##
## Study: anova ~ "c_agua"
##
## LSD t Test for cons_o
##
## Mean Square Error: 8.762171
##
## c_agua, means and individual ( 95 %) CI
##
## cons_o std r se LCL UCL Min Max Q25 Q50
## 100 8.67125 3.000940 16 0.7400241 7.177821 10.164679 3.68 14.0 6.140 8.595
## 50 12.25062 3.199643 16 0.7400241 10.757196 13.744054 6.38 18.8 10.085 11.455
## 75 6.99250 2.804093 16 0.7400241 5.499071 8.485929 1.80 13.2 5.200 6.430
## Q75
## 100 10.5750
## 50 14.5000
## 75 8.7675
##
## Alpha: 0.05 ; DF Error: 42
## Critical Value of t: 2.018082
##
## least Significant Difference: 2.112028
##
## Treatments with the same letter are not significantly different.
##
## cons_o groups
## 50 12.25062 a
## 100 8.67125 b
## 75 6.99250 b