Secuencia de Prompts Mejorada — App de Estadística Aplicada con Python y R

Instrucción Base (para usar al inicio de cada sesión con la IA)

“Actúa como un Ingeniero de Datos Senior y Tutor Experto en Estadística, Python, R y Streamlit. Todo el código debe cumplir PEP-8, incluir type hints, docstrings estilo Google, y estar estrictamente modularizado. Prioriza st.session_state para evitar recálculos y @st.cache_data para datos. Cada módulo estadístico debe incluir un st.toggle que muestre el código equivalente en R para refuerzo bilingüe. Responde siempre en español.”


FASE 1: Arquitectura, Entorno y Navegación Moderna

Prompt 1. Comprensión general y arquitectura moderna > “Soy estudiante de Ingeniería Agrícola. Debo desarrollar una app web profesional en Streamlit para la asignatura ‘Estadística Aplicada con Python y R’. La app cubrirá: EDA, probabilidad y simulación, ajuste de distribuciones (Normal, Lognormal, Gamma, Gumbel, Pearson), regresión (simple, múltiple, no lineal, LOESS) y series de tiempo. Antes de programar, propón un plan de desarrollo por etapas. Explica cómo estructurar la app usando la API moderna st.navigation y st.Page (no la carpeta pages/ tradicional). Incluye un módulo transversal de ‘Bitácora de IA y Reserva Cognitiva’.”

Prompt 2. Diseño de la estructura del proyecto > “Propón una estructura profesional de carpetas para app_estadistica_aplicada. Debe incluir: app.py (navegación), modules/ (páginas por eje), utils/ (funciones reutilizables), components/ (componentes UI reutilizables), data/ (datasets agrícolas), assets/, tests/ (pytest), requirements.txt, README.md, .gitignore, pyproject.toml. Explica la función de cada elemento y dame los comandos para crear el entorno virtual en Windows PowerShell.”

Prompt 3. Creación del requirements.txt y dependencias > “Genera el requirements.txt con: streamlit, pandas, numpy, scipy, statsmodels, scikit-learn, matplotlib, seaborn, plotly, kaleido, openpyxl, pingouin, fitter (para ajuste de distribuciones), statsforecast o AutoTS, pmdarima, pytest. Indica versión recomendada, función de cada librería y soluciones a problemas comunes con kaleido, pmdarima y fitter en sistemas modernos.”


FASE 2: Módulo Base, UX y Ética

Prompt 4. Página principal y navegación moderna > “Crea app.py usando st.navigation y st.Page. La página de inicio (home.py) debe incluir: título, propósito académico, advertencia sobre interpretación de resultados, y una sección especial ‘Reserva Cognitiva y Ética’ que explique por qué la app no reemplaza el cálculo manual ni el criterio del ingeniero. Incluye un enlace al manifiesto ético y a la bitácora de IA. Usa st.set_page_config con tema visual profesional y documenta todo el código.”


FASE 3: EDA y Visualización (Eje II)

Prompt 5. Módulo EDA con gestión de estado y puente R-Python > “Desarrolla modules/01_eda.py. Debe permitir: 1) Cargar CSV/Excel con datos agrícolas (humedad, precipitación, evapotranspiración, caudal, rendimiento). 2) Mostrar diccionario de datos y perfil con pandas-profiling o ydata-profiling. 3) Detectar faltantes, duplicados y atípicos. 4) Calcular medidas de tendencia central, posición, dispersión, sesgo y curtosis. 5) Visualizaciones: histogramas, boxplots, scatter matrix, heatmap de correlación. Requisitos profesionales: 1) Usa st.session_state para el dataframe. 2) Incluye st.toggle('Ver código R') con tidyverse y ggplot2. 3) Incluye un dataset de ejemplo (ej. precipitación mensual en Sucre).”

Prompt 6. Refactorización hacia utils/ y pruebas unitarias > “Refactoriza la lógica del EDA. Crea utils/eda_utils.py con funciones tipadas para: cargar datos, detectar faltantes, calcular estadísticos descriptivos, detectar atípicos (IQR y Z-score), y generar visualizaciones. Luego crea tests/test_eda_utils.py con pytest para probar al menos 4 funciones con datos simulados. Explica cómo ejecutar las pruebas.”

Prompt 7. Componente reutilizable de visualización > “Crea components/visualizacion.py con funciones reutilizables que generen gráficos con plotly y seaborn: histograma con densidad, boxplot por grupo, scatter con recta de ajuste, heatmap de correlación, y gráfico de dispersión con LOESS. Cada función debe aceptar un dataframe, columnas y parámetros de estilo. Documenta con ejemplos de uso.”


FASE 4: Probabilidad y Simulación (Eje II)

Prompt 8. Módulo de probabilidad aplicada > “Desarrolla modules/02_probabilidad.py. Debe cubrir: 1) Espacio muestral y eventos. 2) Probabilidad condicional e independencia. 3) Regla de Bayes. 4) Simulación de eventos agrícolas: probabilidad de déficit hídrico, ocurrencia de lluvias intensas (>90mm/día), fallas en sistemas de riego. 5) Simulación Monte Carlo con numpy. 6) Ley de los grandes números visualizada. Incluye un st.toggle con código R usando distr o simulaciones base. Dataset: serie histórica de precipitación diaria.”

Prompt 9. Módulo de simulación avanzada > “Continúa modules/02_probabilidad.py con una pestaña de simulación: 1) Simular rendimiento de cultivo bajo incertidumbre climática. 2) Simular tiempo hasta falla de una bomba de riego (distribución exponencial). 3) Comparar frecuencia relativa vs probabilidad teórica. 4) Permitir al estudiante ingresar sus propios parámetros y ver la distribución emergente. Muestra gráficos interactivos con plotly.”


FASE 5: Ajuste de Distribuciones (Eje III)

Prompt 10. Módulo de ajuste de distribuciones > “Desarrolla modules/03_distribuciones.py. Estructura en st.tabs: 1) Distribuciones discretas (Bernoulli, Binomial, Poisson). 2) Distribuciones continuas (Normal, Lognormal, Gamma, Exponencial, Weibull). 3) Distribuciones de valores extremos (Gumbel, Pearson III). 4) Ajuste y comparación. Permite cargar datos (precipitación máxima anual, caudales, rendimientos). Usa la librería fitter para ajustar múltiples distribuciones automáticamente. Muestra: histograma + densidad teórica, Q-Q plot, tabla de parámetros estimados por MLE, y pruebas de bondad de ajuste (KS, Anderson-Darling, Chi-cuadrado).”

Prompt 11. Refactorización del módulo de distribuciones > “Refactoriza la lógica en utils/distributions_utils.py con funciones para: estimar parámetros por MLE, calcular estadísticos de prueba (KS, AD, Chi²), generar Q-Q plots, y clasificar la mejor distribución. Usa @st.cache_data para los ajustes. Incluye el código R equivalente con fitdistrplus y MASS.”

Prompt 12. Módulo de distribuciones: visualización y exportación > “Añade a modules/03_distribuciones.py: 1) Pestaña de comparación visual (múltiples distribuciones superpuestas). 2) Pestaña de probabilidades y cuantiles (calcular P(X<x), percentiles, periodos de retorno para Gumbel). 3) Exportación de figuras a PNG/PDF con kaleido. 4) Exportación de tabla comparativa a Excel.”


FASE 6: Regresión y Modelación (Eje IV)

Prompt 13. Módulo de regresión simple > “Desarrolla modules/04_regresion_simple.py. Permite: 1) Cargar datos (ej. rendimiento vs lámina de riego). 2) Calcular correlación Pearson y Spearman. 3) Ajustar modelo OLS con statsmodels. 4) Mostrar: coeficientes, IC 95%, R², R² ajustado, p-valores. 5) Gráfica de dispersión con recta ajustada e IC. 6) Diagnóstico: residuos vs ajustados, QQ-plot, Shapiro-Wilk. 7) Predicción con intervalo de confianza. Incluye código R con lm().”

Prompt 14. Módulo de regresión múltiple > “Desarrolla modules/05_regresion_multiple.py. Permite: 1) Seleccionar variable respuesta y múltiples predictoras (riego, variables de suelo, clima). 2) Construir fórmula dinámicamente. 3) Ajustar modelo con statsmodels. 4) Mostrar: VIF para detectar multicolinealidad, matriz de correlación, Cook’s distance para influencia. 5) Selección de modelos con AIC/BIC. 6) Gráfica de residuos parciales. 7) Validación cruzada con scikit-learn. Incluye código R con car y MuMIn.”

Prompt 15. Módulo de regresión no lineal y LOESS > “Desarrolla modules/06_regresion_no_lineal.py. Debe cubrir: 1) Modelos no lineales (logístico, exponencial, potencial) usando scipy.optimize.curve_fit. 2) Ajuste LOESS/LOWESS con statsmodels.nonparametric. 3) Comparación AIC/BIC entre modelos lineales y no lineales. 4) Visualización de curvas ajustadas sobre datos. 5) Interpretación de parámetros en contexto agrícola (ej. curva de respuesta a fertilización). Incluye código R con nls() y loess().”

Prompt 16. Refactorización de módulos de regresión > “Refactoriza la lógica de regresión en utils/regression_utils.py con funciones para: ajustar OLS, calcular VIF, detectar outliers (Cook), seleccionar modelos (AIC/BIC), ajustar modelos no lineales, y aplicar LOESS. Crea tests/test_regression_utils.py con pytest. Reescribe los módulos 04, 05 y 06 usando estas funciones.”


FASE 7: Series de Tiempo (Eje V)

Prompt 17. Módulo de series de tiempo: EDA temporal > “Desarrolla modules/07_series_tiempo.py con pestaña ‘Exploración’. Permite cargar series agrícolas (precipitación, caudal, evapotranspiración, producción). Debe: 1) Convertir índice a datetime. 2) Graficar serie con tendencia. 3) Descomposición clásica (tendencia, estacionalidad, residuo) con statsmodels.tsa.seasonal. 4) Autocorrelación (ACF) y autocorrelación parcial (PACF). 5) Prueba de estacionariedad (ADF). Incluye código R con forecast y tseries.”

Prompt 18. Módulo de series de tiempo: pronóstico > “Continúa modules/07_series_tiempo.py con pestaña ‘Pronóstico’. Debe: 1) Partición temporal (train/test). 2) Ajustar modelos: Media móvil, Suavización exponencial (Holt-Winters), ARIMA con pmdarima.auto_arima. 3) Comparar métricas: MAE, RMSE, MAPE. 4) Graficar pronóstico con intervalos de confianza. 5) Validación fuera de muestra. 6) Exportar pronóstico a CSV. Incluye código R con forecast::auto.arima().”

Prompt 19. Refactorización de series de tiempo > “Refactoriza la lógica en utils/timeseries_utils.py con funciones para: descomposición, ACF/PACF, prueba ADF, ajuste de modelos (Holt-Winters, ARIMA), cálculo de métricas, y generación de pronósticos. Usa @st.cache_resource para los modelos ajustados. Crea tests con pytest.”


FASE 8: Transversalidad, Diagnóstico y Ética

Prompt 20. Diagnóstico de supuestos transversal > “Crea utils/diagnostics_utils.py con funciones para: normalidad (Shapiro-Wilk, QQ-plot), homocedasticidad (Breusch-Pagan, Levene), independencia (Durbin-Watson), multicolinealidad (VIF), e influencia (Cook). Crea components/diagnostico.py reutilizable que se inserte en los módulos de regresión mediante st.expander. Incluye interpretación pedagógica automática.”

Prompt 21. Módulo de bitácora de IA y reserva cognitiva > “Crea modules/08_bitacora.py. Esta página permitirá al estudiante registrar: 1) El problema estadístico. 2) Sus cálculos manuales o hipótesis previas (reserva cognitiva). 3) El prompt usado con la IA. 4) La validación humana realizada. 5) Reflexión sobre lo aprendido. Guarda la bitácora en JSON descargable. Incluye una plantilla de protocolo de uso ético de IA.”

Prompt 22. Exportación de reportes completos > “Crea utils/export_utils.py. Permite descargar: tablas de estadísticos, resultados de ajuste de distribuciones, tablas de regresión, pronósticos, y un reporte en Markdown que resuma el análisis. Usa BytesIO y st.download_button. Los archivos Excel deben tener formato condicional (resaltar p-valores < 0.05).”


FASE 9: Despliegue, Documentación y Sustentación

Prompt 23. README académico y técnico > “Escribe un README.md profesional. Debe incluir: título, badges, descripción, objetivo académico, capturas de pantalla (placeholders), instalación, ejecución, estructura del proyecto, tecnologías, sección especial sobre ‘Ética, Reserva Cognitiva y Uso de IA’, y referencias bibliográficas (Wickham, McKinney, Hyndman, Montgomery).”

Prompt 24. Preparación para GitHub y Streamlit Cloud > “Dame el .gitignore exacto para Python, Streamlit y entornos virtuales. Proporciona los comandos de Git para inicializar, commit y push. Explica paso a paso cómo desplegar en Streamlit Community Cloud, cómo solucionar errores comunes (especialmente con pmdarima, fitter y kaleido en Linux), y cómo configurar Secrets si es necesario.”

Prompt 25. Guion para sustentación final > “Organiza un guion para sustentación de 15 minutos. Estructura: 1) Problema agrícola analizado. 2) Arquitectura técnica. 3) Demostración en vivo de EDA, ajuste de distribución (Gumbel para precipitación) y pronóstico de serie temporal. 4) Explicación de cómo la app fomenta la reserva cognitiva. 5) Limitaciones y trabajo futuro. Divide el guion entre los integrantes.”


FASE 10: Prompts de Emergencia (Depuración)

Prompt 26. Error de importación y estructura > “Me aparece ModuleNotFoundError: No module named 'utils...'. Esta es mi estructura: [pegar]. Este es mi app.py: [pegar]. Diagnostica el problema. Explica si necesito __init__.py, modificar sys.path, o si Streamlit está causando el error. Dame la solución exacta.”

Prompt 27. Error estadístico en ajuste de distribuciones > “Al ajustar una distribución Gamma con fitter, el modelo no converge o da parámetros inválidos. Este es mi dataframe: [pegar]. Este es el código: [pegar]. Revisa la matemática de la estimación por MLE. Corrige el código y explica el error estadístico (posibles causas: datos negativos, soporte incorrecto, valores atípicos).”

Prompt 28. Error en series de tiempo > “Al ajustar ARIMA con pmdarima, la serie no es estacionaria o el modelo no converge. Este es mi código: [pegar]. Esta es mi serie: [pegar]. Revisa si necesito diferenciar, transformar (Box-Cox), o manejar estacionalidad. Corrige el código y explica el diagnóstico.”

Prompt 29. Error de despliegue en Streamlit Cloud > “La app funciona localmente pero falla en Streamlit Cloud. Error: [pegar]. Este es mi requirements.txt: [pegar]. Diagnostica si es problema de dependencias del sistema (ej. compiladores para pmdarima), versión de Python, o archivos faltantes. Dame la solución exacta.”


Recomendaciones Adicionales para el Docente

  1. Evaluación por Ejes: Le sugiero evaluar por hitos alineados con los ejes del plan: Eje II (EDA + Probabilidad), Eje III (Distribuciones), Eje IV (Regresión), Eje V (Series de Tiempo). Esto evita la sobrecarga al final del semestre.

  2. Dualidad Python-R como Herramienta Pedagógica: El st.toggle que muestra código R en cada módulo es fundamental. Permite que el estudiante verifique resultados entre ambos lenguajes, reforzando la comprensión estadística más allá de la sintaxis.

  3. Énfasis en Datos Agrícolas Contextualizados: Insista en que los datasets de ejemplo sean reales o simulados pero verosímiles de la región (Sucre, Córdoba, sabanas): precipitación del Caribe colombiano, caudales del río San Jorge, rendimientos de maíz y yuca, etc. Esto ancla el aprendizaje en su contexto profesional.

  4. Bitácora de IA Obligatoria: El módulo de bitácora no es opcional. Debe ser parte de la entrega final, pues cumple con el requisito de trazabilidad y ética del plan de estudios.

  5. Validación Manual: En cada módulo, incluya un espacio donde el estudiante ingrese cálculos manuales (ej. media, varianza, coeficiente de correlación) y la app los compare con los computacionales. Esto refuerza la reserva cognitiva.