Lo siguiente estructura la aplicación paso a paso, asegurando que se entienda qué hace cada módulo, qué datos necesita, qué cálculos estadísticos se requieren y cómo organizar el código de forma profesional.
Vamos a dividir la respuesta en dos partes:
¿Qué hace? Compara k tratamientos con unidades
experimentales homogéneas.
Entradas del usuario: - Opción 1: Subir archivo CSV con
columnas Tratamiento (categórica) y Respuesta
(numérica). - Opción 2: Ingresar manualmente número de tratamientos,
réplicas (iguales o desiguales) y los datos.
Cálculos estadísticos: - ANOVA unifactorial (modelo:
Respuesta ~ Tratamiento). - Prueba de comparaciones
múltiples (Tukey HSD o LSD). - Estadísticos descriptivos por tratamiento
(media, desviación, error estándar).
Tablas: - Resumen descriptivo por tratamiento. - Tabla ANOVA (Fuente, GL, SC, CM, F, p-valor). - Matriz de comparación de medias (grupos de Tukey).
Gráficas: - Diagrama de caja (boxplot) por tratamiento. - Gráfico de medias con barras de error (intervalo de confianza 95%).
¿Qué hace? Controla una fuente de variabilidad
(bloque) sin interacción con tratamientos.
Entradas: - CSV con columnas: Tratamiento,
Bloque, Respuesta.
Cálculos: - ANOVA de dos vías sin interacción:
Respuesta ~ Tratamiento + Bloque.
Tablas: - ANOVA con efectos de tratamiento y bloque. - Medias por tratamiento y por bloque. - Comparación de tratamientos ajustada por bloques (Tukey).
Gráficas: - Boxplot agrupado por tratamiento y bloque (opcional). - Perfil de medias por bloque (líneas).
¿Qué hace? Controla dos fuentes de variabilidad
(filas y columnas) con un solo factor de tratamiento.
Entradas: - Tamaño k (ej. 4x4). - Datos en formato CSV
con filas y columnas, más una columna de tratamiento (o matriz
cuadrada). - Alternativa: subir matriz de respuestas y especificar la
disposición del tratamiento.
Cálculos: - ANOVA de tres vías sin interacciones:
Respuesta ~ Fila + Columna + Tratamiento.
Tablas: - ANOVA con tres efectos principales. - Medias por tratamiento.
Gráficas: - Mapa de calor de la matriz de respuestas (opcional).
¿Qué hace? Evalúa dos factores (A y B) donde la
aleatorización de A ocurre a nivel de parcela grande y B a nivel de
subparcela.
Entradas: - CSV con columnas:
ParcelaGrande (bloque o réplica para A),
FactorA, FactorB, Respuesta. -
Número de réplicas (bloques) y niveles de A y B.
Cálculos: - ANOVA de parcelas divididas con dos
errores: - Error de parcela (para factor A). - Error de subparcela (para
factor B e interacción A:B). - Usar statsmodels con
estructura de error jerárquica.
Tablas: - ANOVA completo con GL, SC, CM, F y p-valores para: A, Error_A, B, A:B, Error_B.
Gráficas: - Interacción A:B (gráfico de líneas). - Boxplots separados por niveles de A.
¿Qué hace? Estudia efectos principales e
interacciones entre factores.
Entradas: - Número de factores (k), niveles por factor
(2 o 3), réplicas. - CSV con columnas: Factor1,
Factor2, …, Respuesta.
Cálculos: - ANOVA completo con efectos e interacciones hasta orden k. - Estimación de efectos (para diseño 2^k con signos). - Gráfico de Pareto de efectos estandarizados. - Prueba de falta de ajuste si hay réplicas.
Tablas: - Coeficientes, efectos, p-valores. - ANOVA.
Gráficas: - Gráfico de interacción (interaction plot). - Gráfico de efectos principales (main effects plot). - Pareto de efectos.
Este es el módulo más completo. Se trabajará con diseño experimental tipo CCD (Composite Central) o Box-Behnken, o con datos de usuario.
y = β0 + β1*x1 + ... + βk*xk + β12*x1*x2 + ...y = β0 + Σβi xi + Σβii xi² + Σβij xi xj.2 * [βii] * x + [βi] = 0.matplotlib y pdfkit o directamente
plt.savefig).Usaremos Streamlit con navegación de páginas (biblioteca
st_pages o la nativa pages/). Cada módulo será
una función o un script separado.
app.py # Página principal (inicio)
pages/
1_DCA.py
2_DBCA.py
3_DCL.py
4_DPD.py
5_Factoriales.py
6_RSM.py
utils/
anova.py # funciones ANOVA reutilizables
plots.py # gráficos comunes (boxplot, interacción)
rsm_utils.py # modelos de primer/segundo orden, gradiente, punto estacionario
export.py # exportar figuras a PNG/PDF
data/
ejemplos/ # archivos CSV de ejemplo
requirements.txt
app.py con descripción y sidebar.statsmodels.formula.api.ols y
anova_lm.statsmodels.stats.multicomp.pairwise_tukeyhsd.st.dataframe con formato).pd.melt para reordenar.statsmodels.formula.api.mixedlm o construir manualmente con
ols y usar Error() en fórmula? Más fácil: usar
ols('Respuesta ~ A + B + A:B + Error(bloco/A)') pero
statsmodels no soporta Error(). Alternativa: calcular manualmente los
cuadrados medios usando partición de la suma de cuadrados. Recomiendo
usar pymer4 o rpy2? No, mejor implementar la
lógica de parcelas divididas manualmente siguiendo las fórmulas de
Montgomery. Para simplificar, puedes usar statsmodels con
dos modelos separados: primero analizar totales de parcelas para A,
luego residuales para B. Pero puede ser complejo. Alternativa
práctica: usar pingouin que tiene
mixed_anova. Instala pingouin. Hará más fácil
DPD.plotly para que sean
dinámicos.plotly.io.write_image
(necesita kaleido). O usar matplotlib para exportación más fiable.session_state: Para mantener
datos entre diferentes análisis dentro de un mismo módulo.@st.cache_data para
cargar archivos CSV y para cálculos pesados (ANOVA).st.markdown con CSS
para centrar tablas o mejorar apariencia.st.help) o íconos de info en cada entrada.