require(ggplot2)   # gráficas
require(table1)    # tablas descriptivas
require(agricolae) # diseños experimentales y pruebas post-hoc

1. Introducción

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.

2. Carga y preparación de los datos

Nota: ajusta la ruta de load() a la ubicación del archivo moluscos.RData en tu computador.

load("C:/Users/laura/OneDrive - PUJ Cali/Documentos/bioestadistica/moluscos.RData")  # ajustar ruta según corresponda

BD_moluscos$molusco <- factor(BD_moluscos$molusco)
BD_moluscos$c_agua  <- factor(BD_moluscos$c_agua, levels = c(50, 75, 100))

3. Exploración univariada

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")

4. Exploración bivariada

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")

5. ANOVA de dos vías

5.1 Planteamiento de hipótesis

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

  • \(H_0\): el consumo promedio de oxígeno es igual entre los distintos tipos de molusco (\(\mu_1 = \mu_2 = \dots = \mu_k\)).
  • \(H_1\): al menos un tipo de molusco difiere de los demás en su consumo promedio de oxígeno.

Efecto principal de c_agua

  • \(H_0\): el consumo promedio de oxígeno es igual entre las distintas concentraciones de agua de mar (\(\mu_{50} = \mu_{75} = \mu_{100}\)).
  • \(H_1\): al menos una concentración de agua de mar difiere de las demás en el consumo promedio de oxígeno.

Efecto de interacción molusco × c_agua

  • \(H_0\): no existe interacción entre el tipo de molusco y la concentración de agua de mar; el efecto de un factor sobre el consumo de oxígeno no depende del nivel del otro factor.
  • \(H_1\): existe interacción entre el tipo de molusco y la concentración de agua de mar; el efecto de un factor sobre el consumo de oxígeno depende del nivel del otro factor.

En los tres casos se rechaza \(H_0\) si el valor-p asociado es menor a un nivel de significancia \(\alpha = 0.05\).

5.2 Ajuste del modelo

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

5.3 Verificación de supuestos

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)

  • \(H_0\): los residuos del modelo siguen una distribución normal.
  • \(H_1\): los residuos del modelo no siguen una distribución normal.
shapiro.test(residuals(anova))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(anova)
## W = 0.95824, p-value = 0.08571

Homogeneidad de varianzas (prueba de Bartlett)

  • \(H_0\): las varianzas del consumo de oxígeno son iguales entre todos los grupos definidos por la interacción molusco × c_agua (homocedasticidad).
  • \(H_1\): al menos un grupo presenta una varianza diferente a las demás (heterocedasticidad).
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.

5.4 Prueba post-hoc: LSD

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.

  • \(H_0\): no hay diferencia entre las medias de los niveles de concentración de agua comparados dos a dos.
  • \(H_1\): hay diferencia entre las medias de los niveles de concentración de agua comparados dos a dos.
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

6. Conclusiones

Completa esta sección interpretando los resultados obtenidos: indica si se rechazan o no las hipótesis nulas planteadas para cada efecto del ANOVA, si se cumplen los supuestos de normalidad y homocedasticidad, y qué diferencias específicas identificó la prueba LSD entre las concentraciones de agua.