A continuación se detalla una secuencia de prompts progresivos para desarrollar una app multipágina en Streamlit sobre regresiones y series de tiempo con AutoTS, incorporando teoría, explicación estadística, visualizaciones, carga de datos, métricas y exportación.

La secuencia está alineada con el plan de tres semanas: regresión lineal, regresión no lineal/logística, preprocesamiento de series, AutoTS, métricas MAE/RMSE y despliegue final en Streamlit Cloud. Además, se recomienda trabajar con la estructura multipágina moderna de Streamlit, porque la documentación oficial indica que st.Page y st.navigation son el método preferido para definir apps multipágina personalizables. (Streamlit Docs) Para exportar resultados, st.download_button es el widget oficial de Streamlit para descargar archivos desde la app. (Streamlit Docs) AutoTS se plantea como paquete de Python para pronósticos automáticos de series de tiempo. (GitHub)


Secuencia de prompts para desarrollar la app

Prompt 1. Diseño general del proyecto

Actúa como docente experto en Estadística Aplicada con Python, Ciencia de Datos y desarrollo de aplicaciones educativas con Streamlit.

Necesito desarrollar desde cero una app multipágina en Streamlit para la asignatura Estadística Aplicada con Python y R.

La app debe cubrir dos grandes bloques:

1. Regresiones:
   - Regresión lineal simple.
   - Regresión lineal múltiple.
   - Regresión polinómica.
   - Regresión logística.

2. Series de tiempo:
   - Carga y preparación de datos temporales.
   - Conversión de fechas con pandas.
   - Visualización de series.
   - Descomposición en tendencia, estacionalidad y residuo.
   - Pronósticos automatizados con AutoTS.
   - Evaluación con MAE y RMSE.
   - Exportación de resultados.

Quiero que la app tenga una finalidad didáctica, por lo tanto cada página debe incluir:
- Explicación teórica breve.
- Fórmulas esenciales.
- Interpretación estadística.
- Funcionalidad interactiva.
- Gráficas.
- Tablas de resultados.
- Recomendaciones para estudiantes de Ingeniería Agrícola, Agroindustrial y Civil.

Propón la estructura completa del proyecto con carpetas y archivos. Usa esta organización:

app.py
pages/
utils/
data/
.streamlit/
requirements.txt
README.md

La app debe usar st.Page y st.navigation para crear la navegación multipágina.

No escribas todavía todo el código. Primero entrega solamente:
1. La estructura del proyecto.
2. El propósito de cada archivo.
3. La lista de páginas de la app.
4. Las librerías necesarias.
5. Una breve explicación pedagógica del flujo de aprendizaje.

Prompt 2. Crear requirements.txt, .gitignore y configuración inicial

Con base en la estructura propuesta, genera los archivos iniciales del proyecto Streamlit.

Necesito:

1. Un archivo requirements.txt con las librerías necesarias para:
   - streamlit
   - pandas
   - numpy
   - scipy
   - statsmodels
   - scikit-learn
   - matplotlib
   - seaborn
   - plotly
   - autots
   - openpyxl

2. Un archivo .gitignore adecuado para un proyecto Python en VSCode, que ignore:
   - .venv/
   - __pycache__/
   - .ipynb_checkpoints/
   - archivos temporales
   - archivos del sistema
   - credenciales o secretos

3. Un archivo .streamlit/config.toml con configuración básica:
   - tema claro
   - título de la app
   - color primario sobrio
   - layout amplio

Entrega el contenido completo de cada archivo en bloques separados.

Prompt 3. Crear app.py con navegación multipágina

Ahora genera el archivo app.py para una app multipágina en Streamlit.

Requisitos:

1. Usar st.set_page_config().
2. Usar st.Page y st.navigation.
3. Crear una navegación con estas páginas:

- Inicio
- Regresión lineal
- Regresión no lineal y logística
- Series de tiempo
- Pronósticos con AutoTS
- Auditoría de modelos y métricas
- Exportación de resultados

4. Cada página estará guardada en la carpeta pages/ con estos nombres:

pages/00_Inicio.py
pages/01_Regresion_Lineal.py
pages/02_No_Lineal_Logistica.py
pages/03_Series_Tiempo.py
pages/04_AutoTS_Pronostico.py
pages/05_Auditoria_Modelos.py
pages/06_Exportacion_Resultados.py

5. Agrega una barra lateral con:
   - Nombre de la asignatura.
   - Nombre del proyecto.
   - Breve descripción del objetivo.
   - Recomendación para que el estudiante use sus propios datasets.

6. El código debe estar bien comentado.

Entrega solamente el código completo de app.py.

Prompt 4. Crear funciones reutilizables en utils/data_utils.py

Genera el archivo utils/data_utils.py para una app Streamlit de Estadística Aplicada.

Este archivo debe contener funciones reutilizables para:

1. Cargar datasets locales de ejemplo desde la carpeta data/.
2. Cargar archivos subidos por el usuario en formato CSV o Excel.
3. Detectar automáticamente columnas numéricas.
4. Detectar columnas categóricas.
5. Detectar posibles columnas de fecha.
6. Limpiar nombres de columnas.
7. Mostrar un resumen básico del dataframe:
   - número de filas
   - número de columnas
   - tipos de datos
   - valores faltantes
   - primeras filas

Requisitos:
- Usar pandas.
- Incluir docstrings en español.
- Incluir manejo básico de errores.
- No usar rutas absolutas.
- El código debe ser claro, modular y fácil de mantener.

Entrega solamente el código completo de utils/data_utils.py.

Prompt 5. Crear funciones de regresión en utils/regression_utils.py

Genera el archivo utils/regression_utils.py para centralizar las funciones estadísticas de regresión.

Debe incluir funciones para:

1. Ajustar regresión lineal simple con statsmodels.
2. Ajustar regresión lineal múltiple con statsmodels usando sintaxis de fórmulas.
3. Ajustar regresión polinómica con scikit-learn.
4. Ajustar regresión logística binaria con statsmodels o scikit-learn.
5. Calcular métricas:
   - R²
   - R² ajustado, cuando aplique
   - MAE
   - RMSE
6. Generar predicciones.
7. Extraer una tabla de coeficientes interpretables.
8. Devolver residuos del modelo.

Requisitos:
- Usar pandas, numpy, statsmodels y scikit-learn.
- Incluir docstrings en español.
- Incluir comentarios explicativos.
- Manejar errores comunes, por ejemplo:
  - variables no numéricas en regresión lineal
  - variable objetivo no binaria en regresión logística
  - datos faltantes
  - número insuficiente de observaciones

Entrega solamente el código completo de utils/regression_utils.py.

Prompt 6. Crear funciones de series de tiempo en utils/time_series_utils.py

Genera el archivo utils/time_series_utils.py para una app Streamlit sobre series de tiempo.

Debe incluir funciones para:

1. Convertir una columna a formato datetime.
2. Ordenar los datos por fecha.
3. Crear una serie temporal con índice de fecha.
4. Agregar datos por frecuencia:
   - diaria
   - mensual
   - trimestral
   - anual
5. Graficar la serie original.
6. Calcular media móvil.
7. Realizar descomposición clásica de la serie con statsmodels:
   - tendencia
   - estacionalidad
   - residuo
8. Dividir la serie en entrenamiento y prueba.
9. Calcular métricas de pronóstico:
   - MAE
   - RMSE
   - MAPE, cuando sea posible

Requisitos:
- Usar pandas, numpy, statsmodels y scikit-learn.
- Incluir docstrings en español.
- Incluir manejo de errores.
- Preparar las funciones para ser usadas desde Streamlit.

Entrega solamente el código completo de utils/time_series_utils.py.

Prompt 7. Crear página de inicio pages/00_Inicio.py

Genera la página pages/00_Inicio.py para la app Streamlit.

Esta página debe presentar la app con enfoque didáctico.

Debe incluir:

1. Título:
   “App de Estadística Aplicada: Regresiones y Series de Tiempo con AutoTS”

2. Descripción general:
   - La app permite estudiar modelos de regresión y pronóstico.
   - Está orientada a estudiantes de Ingeniería Agrícola, Agroindustrial y Civil.
   - Integra teoría, análisis, visualización, interpretación y exportación.

3. Una sección llamada “Ruta de aprendizaje” con estas etapas:
   - Regresión lineal simple y múltiple.
   - Regresión no lineal y logística.
   - Preprocesamiento de series de tiempo.
   - Pronóstico automatizado con AutoTS.
   - Evaluación de modelos.
   - Exportación de resultados.

4. Una sección llamada “Uso responsable de la inteligencia artificial”, indicando que:
   - La IA puede apoyar la generación de código.
   - El estudiante debe interpretar, verificar y explicar los resultados.
   - La autoría académica exige comprensión propia.

5. Una sección de instrucciones:
   - Cargar datos.
   - Seleccionar variables.
   - Ejecutar modelos.
   - Interpretar salidas.
   - Exportar resultados.

6. Usar st.markdown, st.info, st.warning y st.expander.

El código debe estar comentado y ser compatible con la navegación multipágina.
Entrega solamente el código completo.

Prompt 8. Crear página de regresión lineal pages/01_Regresion_Lineal.py

Genera la página pages/01_Regresion_Lineal.py.

Objetivo:
Crear una página didáctica e interactiva para explicar y aplicar regresión lineal simple y múltiple.

La página debe incluir:

1. Explicación teórica:
   - Qué es la regresión lineal.
   - Diferencia entre regresión simple y múltiple.
   - Variable dependiente e independientes.
   - Interpretación de coeficientes.
   - R², valor p, error estándar y residuos.
   - Supuestos básicos del modelo.

2. Fórmulas esenciales en formato Markdown:
   - Modelo simple: y = β0 + β1x + ε
   - Modelo múltiple: y = β0 + β1x1 + β2x2 + ... + βkxk + ε

3. Funcionalidad:
   - Cargar archivo CSV o Excel.
   - Usar un dataset de ejemplo si no se carga archivo.
   - Seleccionar variable respuesta.
   - Seleccionar una o varias variables predictoras.
   - Ajustar el modelo con statsmodels.
   - Mostrar resumen del modelo.
   - Mostrar tabla de coeficientes.
   - Mostrar métricas R², R² ajustado, MAE y RMSE.
   - Graficar valores observados vs predichos.
   - Graficar residuos.

4. Interpretación automática:
   - Explicar qué significa el R².
   - Identificar variables con p < 0.05.
   - Advertir que significancia estadística no siempre implica importancia práctica.

5. Aplicaciones:
   - Ingeniería Agrícola: humedad del suelo, caudales, rendimiento.
   - Ingeniería Agroindustrial: calidad, producción, concentración.
   - Ingeniería Civil: resistencia, asentamientos, consumo de materiales.

Usa las funciones de utils/data_utils.py y utils/regression_utils.py.

Entrega solamente el código completo de la página.

Prompt 9. Crear página de regresión no lineal y logística

Genera la página pages/02_No_Lineal_Logistica.py.

Objetivo:
Crear una página didáctica e interactiva sobre regresión polinómica y regresión logística binaria.

La página debe tener dos pestañas usando st.tabs():

Pestaña 1: Regresión polinómica
Debe incluir:
- Explicación teórica.
- Cuándo un modelo lineal no es suficiente.
- Fórmula general: y = β0 + β1x + β2x² + ... + βkx^k + ε
- Selector de variable X.
- Selector de variable Y.
- Selector de grado polinómico.
- Ajuste con scikit-learn.
- Gráfica de dispersión y curva ajustada.
- Métricas R², MAE y RMSE.
- Advertencia sobre sobreajuste cuando el grado sea alto.

Pestaña 2: Regresión logística
Debe incluir:
- Explicación teórica.
- Variable respuesta binaria.
- Eventos tipo éxito/falla, presencia/ausencia, aprobado/no aprobado.
- Fórmula de la función logística.
- Carga de datos.
- Selección de variable respuesta binaria.
- Selección de variables predictoras.
- Ajuste del modelo.
- Matriz de confusión.
- Accuracy, precisión, recall y F1-score.
- Interpretación de probabilidades.

Además:
- Incluir ejemplos de aplicación en Ingeniería Agrícola, Agroindustrial y Civil.
- Usar st.expander para explicación de fórmulas.
- Usar plotly o matplotlib para las gráficas.
- Incluir comentarios claros en el código.

Entrega solamente el código completo.

Prompt 10. Crear página de series de tiempo

Genera la página pages/03_Series_Tiempo.py.

Objetivo:
Crear una página didáctica para introducir el análisis de series de tiempo y el preprocesamiento temporal.

Debe incluir:

1. Explicación teórica:
   - Qué es una serie de tiempo.
   - Diferencia entre datos transversales y datos longitudinales.
   - Importancia del orden temporal.
   - Componentes: tendencia, estacionalidad, ciclo y ruido.
   - Riesgos de ignorar la estructura temporal.

2. Funcionalidad:
   - Cargar archivo CSV o Excel.
   - Usar dataset de ejemplo si no hay archivo cargado.
   - Seleccionar columna de fecha.
   - Seleccionar variable numérica.
   - Convertir fecha a datetime.
   - Ordenar por fecha.
   - Seleccionar frecuencia de agregación:
     diaria, mensual, trimestral o anual.
   - Graficar la serie original.
   - Graficar media móvil.
   - Realizar descomposición clásica con statsmodels.
   - Mostrar gráficos de tendencia, estacionalidad y residuo.

3. Interpretación automática:
   - Comentar si la serie muestra tendencia visual.
   - Explicar qué significa la estacionalidad.
   - Explicar qué representa el residuo.
   - Advertir cuando hay pocos datos para descomposición.

4. Aplicaciones:
   - Caudales de ríos.
   - Precipitación.
   - Producción mensual.
   - Demanda de insumos.
   - Consumo energético.

Usa funciones de utils/data_utils.py y utils/time_series_utils.py.

Entrega solamente el código completo.

Prompt 11. Crear página de AutoTS

Genera la página pages/04_AutoTS_Pronostico.py.

Objetivo:
Crear una página para ejecutar pronósticos automatizados con AutoTS en una app Streamlit.

Debe incluir:

1. Explicación teórica:
   - Qué es AutoML.
   - Qué es AutoTS.
   - Por qué se usan modelos automáticos en series de tiempo.
   - Ventajas y limitaciones.
   - Importancia de validar los resultados.

2. Funcionalidad:
   - Cargar archivo CSV o Excel.
   - Seleccionar columna de fecha.
   - Seleccionar variable objetivo.
   - Seleccionar frecuencia de la serie.
   - Seleccionar horizonte de pronóstico.
   - Seleccionar configuración rápida:
     - superfast
     - fast
   - Ejecutar AutoTS con parámetros adecuados para un computador de estudiante.
   - Mostrar pronóstico.
   - Mostrar intervalos de predicción cuando estén disponibles.
   - Graficar serie histórica y pronóstico.
   - Guardar los resultados en st.session_state para usarlos en la página de exportación.

3. Controles de seguridad:
   - Advertir que AutoTS puede tardar.
   - Usar configuraciones livianas por defecto.
   - Capturar errores cuando la serie tenga pocos datos.
   - Explicar que el resultado debe ser interpretado y no aceptado automáticamente.

4. Interpretación:
   - Explicar el modelo ganador.
   - Explicar horizonte de pronóstico.
   - Explicar intervalos de predicción.
   - Recomendar validación con criterio técnico.

Entrega solamente el código completo.

Prompt 12. Crear página de auditoría de modelos y métricas

Genera la página pages/05_Auditoria_Modelos.py.

Objetivo:
Crear una página para evaluar críticamente los modelos de regresión y pronóstico.

Debe incluir:

1. Explicación teórica:
   - Qué significa auditar un modelo.
   - Diferencia entre ajustar y validar.
   - Error absoluto medio MAE.
   - Raíz del error cuadrático medio RMSE.
   - MAPE cuando aplique.
   - Sobreajuste.
   - Interpretación técnica de métricas.

2. Funcionalidad:
   - Permitir cargar un archivo con columnas:
     fecha, observado, predicho.
   - Calcular MAE, RMSE y MAPE.
   - Mostrar tabla comparativa observado vs predicho.
   - Graficar observado y predicho.
   - Graficar errores.
   - Mostrar histograma de errores.
   - Permitir comparar dos modelos si el archivo contiene dos columnas de predicción.

3. Interpretación automática:
   - Indicar cuál modelo tiene menor MAE.
   - Indicar cuál tiene menor RMSE.
   - Explicar cuándo RMSE penaliza más los errores grandes.
   - Advertir que una métrica baja no garantiza validez si los datos están mal preparados.

4. Aplicaciones:
   - Error de pronóstico en caudales.
   - Error de pronóstico en producción.
   - Error en demanda mensual.
   - Error en indicadores de calidad.

Entrega solamente el código completo.

Prompt 13. Crear página de exportación de resultados

Genera la página pages/06_Exportacion_Resultados.py.

Objetivo:
Crear una página para exportar los resultados generados por la app.

Debe incluir:

1. Explicación:
   - Importancia de exportar resultados.
   - Diferencia entre datos limpios, predicciones y reportes.
   - Uso de CSV y Excel para informes académicos.

2. Funcionalidad:
   - Descargar datos procesados como CSV.
   - Descargar pronóstico como CSV.
   - Descargar métricas como CSV.
   - Descargar un resumen textual en formato TXT.
   - Usar st.download_button.
   - Tomar datos desde st.session_state cuando existan.
   - Permitir cargar manualmente un dataframe para exportarlo.

3. Resumen automático:
   - Nombre del análisis.
   - Fecha de generación.
   - Número de registros.
   - Variables usadas.
   - Métricas principales, cuando existan.
   - Recomendación para el informe final.

4. Advertencias:
   - Revisar nombres de columnas.
   - Verificar unidades.
   - No exportar datos sensibles sin autorización.

Entrega solamente el código completo.

Prompt 14. Crear README.md completo para GitHub

Genera un README.md completo para el repositorio de GitHub de esta app.

Nombre del proyecto:
estadistica_regresion_autots_streamlit

El README debe incluir:

1. Título del proyecto.
2. Descripción general.
3. Objetivo académico.
4. Temas cubiertos:
   - Regresión lineal.
   - Regresión polinómica.
   - Regresión logística.
   - Series de tiempo.
   - AutoTS.
   - Métricas de error.
   - Exportación de resultados.
5. Estructura del proyecto.
6. Instalación local en Windows con VSCode:
   - clonar repositorio
   - crear entorno virtual
   - activar entorno virtual
   - instalar requirements
   - ejecutar streamlit
7. Comandos exactos en PowerShell.
8. Instrucciones para subir cambios a GitHub.
9. Instrucciones básicas para desplegar en Streamlit Cloud.
10. Recomendaciones para estudiantes.
11. Uso ético de la IA.
12. Créditos académicos.

El README debe estar escrito en español, con formato Markdown claro y profesional.

Prompt 15. Revisión integral y depuración del proyecto

Actúa como revisor técnico de una app Streamlit multipágina.

Voy a compartirte el código de mi proyecto. Necesito que revises:

1. Errores de importación.
2. Librerías faltantes en requirements.txt.
3. Problemas de rutas relativas.
4. Errores en la navegación multipágina.
5. Uso correcto de st.session_state.
6. Funciones duplicadas que deberían ir a utils/.
7. Código repetido.
8. Posibles errores al subir a Streamlit Cloud.
9. Claridad de comentarios.
10. Claridad pedagógica de los textos teóricos.

Devuélveme:

- Diagnóstico general.
- Lista de errores encontrados.
- Código corregido de los archivos necesarios.
- Recomendaciones para mejorar la app.
- Recomendaciones para hacerla más útil en clase.

No cambies innecesariamente la estructura del proyecto.

Prompt 16. Mejorar la app con contenidos teóricos más explicativos

Actúa como docente de Estadística Aplicada con Python.

Quiero mejorar los textos teóricos de mi app Streamlit sobre regresiones y series de tiempo.

Para cada página de la app, redacta contenido explicativo en Markdown con:

1. Definición del tema.
2. Propósito estadístico.
3. Fórmula principal.
4. Supuestos básicos.
5. Interpretación de resultados.
6. Errores comunes de interpretación.
7. Ejemplo aplicado a Ingeniería Agrícola.
8. Ejemplo aplicado a Ingeniería Agroindustrial.
9. Ejemplo aplicado a Ingeniería Civil.
10. Preguntas de reflexión para el estudiante.

Páginas:
- Regresión lineal.
- Regresión polinómica.
- Regresión logística.
- Series de tiempo.
- AutoTS.
- Métricas MAE, RMSE y MAPE.
- Exportación de resultados.

Entrega el contenido en bloques Markdown listos para pegar dentro de st.markdown().

Prompt 17. Preparar la app para entrega final

Actúa como evaluador académico y desarrollador Streamlit.

Necesito preparar esta app para entrega final en una asignatura universitaria.

Revisa que el proyecto cumpla con estos criterios:

1. La app ejecuta localmente con streamlit run app.py.
2. El repositorio tiene README.md completo.
3. El archivo requirements.txt incluye todas las dependencias.
4. La app tiene navegación multipágina.
5. Cada página incluye teoría y funcionalidad.
6. Las gráficas tienen títulos claros.
7. Las tablas son interpretables.
8. Los modelos muestran métricas.
9. Los resultados pueden exportarse.
10. El estudiante puede explicar qué hace cada sección.

Genera además una lista de chequeo para entregar en Microsoft Teams, con los elementos que el estudiante debe verificar antes de entregar el enlace de GitHub y el enlace de Streamlit Cloud.

Prompt global final para los estudiantes

Este prompt sirve para integrar todo el proyecto cuando ya tengan varios archivos creados.

Actúa como mentor técnico y académico de un proyecto final de Estadística Aplicada con Python.

He desarrollado una app multipágina en Streamlit sobre regresiones y series de tiempo con AutoTS.

Necesito que me ayudes a dejarla lista para entrega académica.

La app debe cumplir con lo siguiente:

1. Tener estructura multipágina.
2. Incluir páginas para:
   - Inicio.
   - Regresión lineal simple y múltiple.
   - Regresión polinómica y logística.
   - Series de tiempo.
   - Pronósticos con AutoTS.
   - Auditoría de modelos y métricas.
   - Exportación de resultados.

3. Cada página debe tener:
   - Explicación teórica.
   - Fórmulas esenciales.
   - Código funcional.
   - Visualizaciones.
   - Interpretación de resultados.
   - Aplicaciones a ingeniería.

4. El proyecto debe incluir:
   - app.py
   - pages/
   - utils/
   - data/
   - requirements.txt
   - README.md
   - .gitignore
   - .streamlit/config.toml

5. La app debe poder ejecutarse con:
   streamlit run app.py

6. Debe estar lista para subir a GitHub y desplegar en Streamlit Cloud.

Por favor revisa, organiza, corrige y mejora el proyecto, manteniendo una estructura clara, código comentado y explicaciones pedagógicas.

Recomendación para sus estudiantes

Cada grupo debería trabajar así:

  1. Crear primero la estructura del proyecto.
  2. Construir una página por vez.
  3. Probar localmente después de cada página.
  4. Subir cambios a GitHub de forma progresiva.
  5. Desplegar en Streamlit Cloud solamente cuando la app funcione localmente.
  6. Preparar una sustentación donde expliquen tanto la parte estadística como el código.

Para la evaluación, lo más importante no debe ser solamente que la app funcione, sino que el estudiante pueda explicar qué modelo usó, por qué lo usó, cómo interpreta las métricas y qué limitaciones tiene el resultado.