La siguiente es la organización de la SESIÓN 1 — ANOVA e Interpretación Formal de la guía: “3_SEMANA_3_ANÁLISIS_COMPLETO_DEL_DCA_ANOVA_SUPUESTOS_Y_PRUEBAS_POST_HOC”, como un paquete listo para diapositivas + explicación docente + código en R y Python, totalmente alineado con tu documento y con énfasis en ingeniería.
Comprender que:
ANOVA no compara medias directamente, sino variabilidades.
Y aprender a interpretar:
Título: ¿Cómo determina la estadística si los tratamientos realmente difieren?
Contenido:
👉 ¿La diferencia es real o es solo variabilidad natural?
Mensaje central (muy importante):
🔴 ANOVA compara variabilidad, NO medias directamente
Explicación:
Si las medias son diferentes → debe haber variabilidad entre tratamientos
Pero siempre existe:
\[SCT = SC_{Trat} + SC_{Error}\]
Interpretación:
| Componente | Significado |
|---|---|
| SCTrat | Variabilidad entre tratamientos |
| SCError | Variabilidad aleatoria |
👉 ANOVA separa “señal” de “ruido”
\[H_0: \tau_1 = \tau_2 = \cdots = \tau_k = 0\]
\[H_a: \text{Al menos un tratamiento difiere}\]
Interpretación:
\[F = \frac{CM_{Trat}}{CM_{Error}}\]
Idea clave:
👉 Se compara:
| p-valor | Interpretación |
|---|---|
| p < 0.05 | Evidencia contra H0 |
| p ≥ 0.05 | No hay evidencia suficiente |
Regla:
⚠️ Importante:
No rechazar H0 ≠ aceptar que son iguales
👉 Diferencia estadística ≠ relevancia ingenieril
Comparar 3 temperaturas de secado sobre rendimiento (% humedad final)
# ==========================================
# ANOVA - Secado de productos agrícolas
# ==========================================
# 1. Crear datos simulados
tratamiento <- factor(rep(c("Baja", "Media", "Alta"), each = 10))
rendimiento <- c(
rnorm(10, mean = 20, sd = 2),
rnorm(10, mean = 18, sd = 2),
rnorm(10, mean = 15, sd = 2)
)
datos <- data.frame(tratamiento, rendimiento)
# 2. Ajustar modelo ANOVA
modelo <- aov(rendimiento ~ tratamiento, data = datos)
# 3. Mostrar resultados
summary(modelo)
tratamiento: factor (niveles)rendimiento: variable respuesta\[Y_{ij} = \mu + \tau_i + \varepsilon_{ij}\]
Salida típica:
Df Sum Sq Mean Sq F value Pr(>F)
tratamiento 2 120.5 60.25 15.3 0.0001
Residuals 27 106.3 3.94
👉 Conclusión:
Al menos una temperatura produce diferente resultado
Comparar 3 métodos de procesamiento en rendimiento (%) de producto
# ==========================================
# ANOVA - Procesamiento agroindustrial
# ==========================================
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
# 1. Crear datos simulados
np.random.seed(123)
tratamiento = np.repeat(['Metodo_A', 'Metodo_B', 'Metodo_C'], 10)
rendimiento = np.concatenate([
np.random.normal(80, 3, 10),
np.random.normal(78, 3, 10),
np.random.normal(72, 3, 10)
])
df = pd.DataFrame({
'tratamiento': tratamiento,
'rendimiento': rendimiento
})
# 2. Ajustar modelo
modelo = ols('rendimiento ~ C(tratamiento)', data=df).fit()
# 3. ANOVA
anova_tabla = sm.stats.anova_lm(modelo, typ=2)
print(anova_tabla)
C(tratamiento) → variable categóricaSalida típica:
sum_sq df F PR(>F)
C(tratamiento) 250.4 2 12.8 0.0002
Residual 260.3 27
ANOVA responde: 👉 “¿Existe diferencia?”
NO responde: 👉 “¿Entre cuáles?”
(Eso es post hoc → sesión 2)
Puedes usar exactamente esto:
Explica con tus propias palabras por qué el ANOVA no compara medias directamente sino variabilidad.
Incluye:
- Qué representa SCTrat y SCError
- Qué significa el estadístico F
- Un ejemplo aplicado a ingeniería agrícola o agroindustrial
Esta estructura está completamente alineada con: