Q2003B · Diseño de Experimentos · S4

🧪 Guía del Alumno — Sesión 4

Pipeline Automatizado de ANOVA · Dr. Jorge Cruz-Angeles

🖥️ 1. Cómo usar Replit — Shell y Scripts

Replit es el entorno donde vas a correr tu código Python esta sesión. Tiene dos áreas que necesitas conocer: el editor de código y la Shell (terminal).

🔧 La Shell — tu terminal de comandos

La Shell es la ventana de texto donde puedes escribir comandos directamente. En Replit la encuentras en la pestaña "Shell" (en la parte inferior o en el panel lateral derecho, dependiendo de tu vista).

¿Para qué sirve la Shell? Instalar librerías, correr scripts, ver archivos generados, levantar servidores. Es tu centro de control.

▶️ Cómo ejecutar un script Python

Con la Shell abierta, escribe:

Shell python3 anova_pipeline.py

Verás el output en tiempo real: estadísticas descriptivas, resultados de supuestos, la prueba ANOVA y las comparaciones post-hoc.

📂 Ver archivos generados

Cuando el script termine, habrá generado dos archivos nuevos en tu proyecto:

Los verás en el árbol de archivos (panel izquierdo de Replit). Para ver el HTML de forma correcta → ir a la Sección 3 de esta guía.

Tip Si el script imprime errores en rojo, léelos de abajo hacia arriba. La última línea dice qué salió mal; las anteriores dicen dónde.

📦 2. Instalación de librerías — El error que te va a salir

⚠️ Primero: el error

Cuando corras el script por primera vez en un Repl nuevo, muy probablemente verás esto:

Error Traceback (most recent call last): File "anova_pipeline.py", line 3, in <module> import scipy.stats as stats ModuleNotFoundError: No module named 'scipy'

¿Qué significa esto?
Python sabe correr código, pero necesita "plugins" externos (llamados librerías) para hacer estadística avanzada, gráficas y más. El Repl nuevo no los tiene instalados aún. scipy, pandas, matplotlib… hay que decirle que los descargue.

✅ La solución — instalar una sola vez

En la Shell, pega este comando y presiona Enter:

Shell pip install pandas scipy matplotlib statsmodels seaborn

Verás que empieza a descargar e instalar. Puede tardar entre 30 segundos y 2 minutos. Al terminar, verás algo como:

Output Successfully installed pandas-2.x.x scipy-1.x.x matplotlib-3.x.x ...
¿Por qué solo una vez? Replit guarda las librerías instaladas en tu proyecto (.pythonlibs/). La próxima vez que abras el mismo Repl, ya estarán listas. Solo necesitas reinstalar si creas un Repl nuevo.

Librerías que instalamos y para qué sirven

🌐 3. Cómo ver el reporte HTML

El script genera un archivo reporte_anova.html. No puedes hacer doble clic para abrirlo directamente en Replit (no es un archivo de texto, es una página web). El truco es levantar un servidor web local dentro del Repl.

🔧 Paso 1 — Levantar el servidor

En la Shell, escribe:

Shell python3 -m http.server 8000

Verás:

Output Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

El servidor está corriendo. No cierres esa ventana de Shell.

🌐 Paso 2 — Abrir la URL de Replit

Replit detecta automáticamente que hay un servidor en el puerto 8000 y te muestra un botón o una URL en la parte superior. Se ve así:

URL de ejemplo https://tu-repl-nombre.tu-usuario.replit.dev
# También puede aparecer como webview dentro del Repl

Ábrela en una pestaña nueva del navegador. Verás el directorio de archivos de tu proyecto. Haz clic en reporte_anova.html para ver el reporte.

¿No ves el botón automáticamente? Busca en el panel superior de Replit la opción "Open in new tab" o un icono de ventana. Si el Repl te pregunta qué puerto usar, escribe 8000.

🛑 Paso 3 — Detener el servidor

Cuando termines de revisar el HTML, regresa a la Shell y presiona:

Shell Ctrl + C
# Esto detiene el servidor web

Ahora puedes seguir corriendo comandos normales en esa Shell.

Flujo completo Correr pipeline → python3 anova_pipeline.py → genera HTML → correr servidor → python3 -m http.server 8000 → abrir URL → ver reporte → Ctrl+C para parar servidor.

⚙️ 4. El Pipeline paso a paso

La clase ANOVAPipeline automatiza el análisis completo de ANOVA en una secuencia de pasos. Cada paso es un método de la clase. Aquí entiendes qué hace cada uno — sin ver el código completo.

1
📥 __init__() — Constructor / Carga de datos Lee el CSV, identifica el factor y la variable de respuesta, divide los datos en grupos. Recibe: archivo_csv, factor, respuesta, alpha.
2
📊 descriptivas() — Estadísticas descriptivas Calcula n, media, desviación estándar, mínimo y máximo por grupo. Primer vistazo a los datos.
3
🔍 validar_supuestos() — Supuestos de ANOVA Prueba de Shapiro-Wilk (normalidad por grupo) y prueba de Levene (igualdad de varianzas). Si la normalidad falla, el pipeline usará Kruskal-Wallis en lugar de ANOVA.
4
🧮 correr_analisis() — Prueba principal Si supuestos OK → ANOVA de Fisher (f_oneway). Si normalidad falla → Kruskal-Wallis. Produce: estadístico F (o H) y p-valor.
5
🔬 post_hoc() — Comparaciones múltiples Si hay diferencia significativa Y los datos son paramétricos → aplica Tukey HSD para comparar todos los pares de grupos. Produce p-valores ajustados (p_adj) para cada par.
6
📈 visualizar() — Gráficas Genera un boxplot (distribución por grupo) y una gráfica de medias con IC95%. Guarda la imagen como PNG.
7
📄 generar_reporte() — Reporte HTML Consolida todos los resultados en un archivo HTML con tablas, interpretaciones y las gráficas integradas. Puedes compartirlo o subirlo a Canvas.

🔗 El método run() — todo de un jalón

En lugar de llamar cada método por separado, puedes usar:

Python pipeline = ANOVAPipeline("datos.csv", factor="grupo", respuesta="valor")
pipeline.run()
# Equivale a llamar: descriptivas → validar_supuestos →
# correr_analisis → post_hoc → visualizar → generar_reporte

📝 Los TODOs que debes completar

En el archivo anova_pipeline.py que tienes en tu Repl, hay secciones marcadas con # TODO. Esas son las partes que tú debes implementar. Las demás ya están resueltas como referencia.

No copies y pegues el código de referencia directo. Léelo, entiéndelo y escribe tu propia versión en los bloques TODO. El objetivo es que entiendas qué hace cada línea, no solo que corra.

📋 5. Avance 1 — Qué entregar

Este es tu primer avance formal de S4. Demuestra que tienes el pipeline corriendo en Replit con tu propio dataset.

📊 Rúbrica de evaluación

Criterio Descripción %
✅ El script corre sin errores python3 anova_pipeline.py termina sin excepciones. Se ve el resumen ejecutivo en consola. 50%
📄 Genera reporte HTML El archivo reporte_anova.html existe y se puede ver con el truco del servidor HTTP. Incluye tablas y gráficas. 25%
🎲 Funciona con dataset sorpresa El pipeline corre sin modificaciones con un CSV diferente que el profesor proporcionará al momento de la revisión. 25%

📅 Fecha límite

📅 Antes del viernes 27 de febrero — 11:59 PM

📤 Cómo entregar en Canvas

  1. Link a tu Repl — copia la URL de tu proyecto Replit (ej. https://replit.com/@tu-usuario/q2003b-s4)
  2. Capturas de pantalla — adjunta:
    • El output en consola (que muestra el resumen ejecutivo)
    • El reporte HTML en el navegador (con tablas y gráficas visibles)
Asegúrate de que el Repl sea público (o compartido con el profesor) para que pueda abrirlo. En Replit: Settings → Visibility → Public.
El reporte NO debe incluir tus conclusiones escritas. Las preguntas de interpretación se responden en clase y en el informe final. Por ahora, enfócate en que el pipeline corra correctamente.