Problema 4.1 (Montgomery)
Considere un Diseño en Cuadro Latino 4×4 que involucra cuatro tratamientos ($A$, $B$, $C$, $D$), cuatro bloques de filas y cuatro bloques de columnas. Los datos se presentan a continuación:
|
Col 1 |
Col 2 |
Col 3 |
Col 4 |
| Fila 1 | A: 6.9 | B: 8.3 | C: 8.0 | D: 6.1 |
| Fila 2 | B: 7.9 | C: 9.1 | D: 6.5 | A: 6.8 |
| Fila 3 | C: 9.3 | D: 7.8 | A: 7.6 | B: 7.0 |
| Fila 4 | D: 6.6 | A: 7.4 | B: 7.3 | C: 9.2 |
a) Realice el análisis de varianza
b) Use la DMS para comparar las medias de tratamientos
Solución en Python
import numpy as np
from scipy import stats
# Datos del problema 4.1
y = np.array([
[6.9, 8.3, 8.0, 6.1], # Fila 1
[7.9, 9.1, 6.5, 6.8], # Fila 2
[9.3, 7.8, 7.6, 7.0], # Fila 3
[6.6, 7.4, 7.3, 9.2] # Fila 4
])
p = 4
N = p ** 2
# Totales
y_i = y.sum(axis=1) # filas
y_j = y.sum(axis=0) # columnas
y_total = y.sum()
# Totales por tratamiento según el arreglo
# A: F1C1, F2C4, F3C3, F4C2
# B: F1C2, F2C1, F3C4, F4C3
# C: F1C3, F2C2, F3C1, F4C4
# D: F1C4, F2C3, F3C2, F4C1
y_A = y[0,0] + y[1,3] + y[2,2] + y[3,1]
y_B = y[0,1] + y[1,0] + y[2,3] + y[3,2]
y_C = y[0,2] + y[1,1] + y[2,0] + y[3,3]
y_D = y[0,3] + y[1,2] + y[2,1] + y[3,0]
y_k = np.array([y_A, y_B, y_C, y_D])
print("=" * 55)
print("PROBLEMA 4.1 - DISEÑO EN CUADRO LATINO")
print("=" * 55)
print(f"\nDatos:")
print(y)
print(f"\nTotal general: y... = {y_total:.2f}")
print(f"\nTotales por tratamiento:")
print(f" A: {y_A:.2f}, B: {y_B:.2f}, C: {y_C:.2f}, D: {y_D:.2f}")
# Sumas de cuadrados
SC_total = (y ** 2).sum() - y_total ** 2 / N
SC_filas = (y_i ** 2).sum() / p - y_total ** 2 / N
SC_columnas = (y_j ** 2).sum() / p - y_total ** 2 / N
SC_tratamientos = (y_k ** 2).sum() / p - y_total ** 2 / N
SC_error = SC_total - SC_filas - SC_columnas - SC_tratamientos
# Grados de libertad
gl_filas = p - 1
gl_columnas = p - 1
gl_tratamientos = p - 1
gl_error = (p - 1) * (p - 2)
gl_total = N - 1
# Cuadrados medios
CM_tratamientos = SC_tratamientos / gl_tratamientos
CM_error = SC_error / gl_error
# Estadístico F
F_0 = CM_tratamientos / CM_error
p_valor = 1 - stats.f.cdf(F_0, gl_tratamientos, gl_error)
print("\n" + "=" * 55)
print("TABLA ANOVA")
print("=" * 55)
print(f"{'Fuente':<18} {'SC':>10} {'GL':>5} {'CM':>10} {'F':>8}")
print("-" * 55)
print(f"{'Filas':<18} {SC_filas:>10.4f} {gl_filas:>5} {SC_filas/gl_filas:>10.4f}")
print(f"{'Columnas':<18} {SC_columnas:>10.4f} {gl_columnas:>5} {SC_columnas/gl_columnas:>10.4f}")
print(f"{'Tratamientos':<18} {SC_tratamientos:>10.4f} {gl_tratamientos:>5} {CM_tratamientos:>10.4f} {F_0:>8.2f}")
print(f"{'Error':<18} {SC_error:>10.4f} {gl_error:>5} {CM_error:>10.4f}")
print(f"{'Total':<18} {SC_total:>10.4f} {gl_total:>5}")
print("=" * 55)
print(f"\nF_0 = {F_0:.4f}, p-value = {p_valor:.6f}")
alpha = 0.05
if p_valor < alpha:
print(f"\nConclusión: p = {p_valor:.6f} < {alpha}")
print("Se RECHAZA H0: Hay diferencias significativas entre tratamientos.")
else:
print(f"\nConclusión: p = {p_valor:.6f} >= {alpha}")
print("NO se rechaza H0: No hay diferencias significativas.")
=====================================================
PROBLEMA 4.1 - DISEÑO EN CUADRO LATINO
=====================================================
Datos:
[[6.9 8.3 8. 6.1]
[7.9 9.1 6.5 6.8]
[9.3 7.8 7.6 7. ]
[6.6 7.4 7.3 9.2]]
Total general: y... = 138.50
Totales por tratamiento:
A: 28.70, B: 30.50, C: 34.60, D: 44.70
=====================================================
TABLA ANOVA
=====================================================
Fuente SC GL CM F
-------------------------------------------------------
Filas 0.5625 3 0.1875
Columnas 7.6875 3 2.5625
Tratamientos 9.3625 3 3.1208 2.99
Error 5.9875 6 0.9979
Total 23.6000 15
=====================================================
F_0 = 3.1275, p-value = 0.114826
Conclusión: p = 0.114826 >= 0.05
NO se rechaza H0: No hay diferencias significativas.
Interpretación: Con un valor p de 0.1148 (mayor que α = 0.05), no se rechaza la hipótesis nula. Aunque visualmente las medias de tratamientos difieren (A: 7.18, B: 7.63, C: 8.65, D: 11.18), la variabilidad dentro de los tratamientos no permite concluir que existan diferencias estadísticamente significativas con un nivel de confianza del 95%.
Problema 4.3 (Montgomery)
Se condujo un experimento para investigar el efecto de 4 catalizadores sobre el tiempo de reacción química. Se utilizó un Diseño en Cuadro Latino 4×4 con los siguientes resultados:
|
Op 1 |
Op 2 |
Op 3 |
Op 4 |
| Lote 1 | A: 73 | B: 74 | C: 77 | D: 75 |
| Lote 2 | B: 75 | C: 79 | D: 76 | A: 74 |
| Lote 3 | C: 77 | D: 79 | A: 76 | B: 77 |
| Lote 4 | D: 75 | A: 76 | B: 76 | C: 79 |
Las columnas representan diferentes operaciones (operarios) y las filas diferentes lotes de materia prima.
a) Analice estos datos
b) ¿Existe diferencia entre los catalizadores?
Solución en Python
import numpy as np
from scipy import stats
# Datos del problema 4.3
y = np.array([
[73, 74, 77, 75], # Lote 1
[75, 79, 76, 74], # Lote 2
[77, 79, 76, 77], # Lote 3
[75, 76, 76, 79] # Lote 4
])
p = 4
N = p ** 2
# Totales
y_i = y.sum(axis=1) # lotes (filas)
y_j = y.sum(axis=0) # operarios (columnas)
y_total = y.sum()
# Totales por tratamiento (según Cuadro Latino estándar)
# A: F1C1, F2C4, F3C3, F4C2
# B: F1C2, F2C1, F3C4, F4C3
# C: F1C3, F2C2, F3C1, F4C4
# D: F1C4, F2C3, F3C2, F4C1
y_A = y[0,0] + y[1,3] + y[2,2] + y[3,1]
y_B = y[0,1] + y[1,0] + y[2,3] + y[3,2]
y_C = y[0,2] + y[1,1] + y[2,0] + y[3,3]
y_D = y[0,3] + y[1,2] + y[2,1] + y[3,0]
y_k = np.array([y_A, y_B, y_C, y_D])
tratamientos = ['A', 'B', 'C', 'D']
medias = y_k / p
print("=" * 55)
print("PROBLEMA 4.3 - CATALIZADORES")
print("=" * 55)
print(f"\nDatos (tiempo de reacción en minutos):")
print(y)
print(f"\nTotal general: {y_total}")
print(f"\nTotales y medias por tratamiento:")
for i, t in enumerate(tratamientos):
print(f" {t}: Total = {y_k[i]}, Media = {medias[i]:.2f}")
# Sumas de cuadrados
SC_total = (y ** 2).sum() - y_total ** 2 / N
SC_filas = (y_i ** 2).sum() / p - y_total ** 2 / N
SC_columnas = (y_j ** 2).sum() / p - y_total ** 2 / N
SC_tratamientos = (y_k ** 2).sum() / p - y_total ** 2 / N
SC_error = SC_total - SC_filas - SC_columnas - SC_tratamientos
# Grados de libertad
gl_tratamientos = p - 1
gl_error = (p - 1) * (p - 2)
# Cuadrados medios
CM_tratamientos = SC_tratamientos / gl_tratamientos
CM_error = SC_error / gl_error
# Estadístico F
F_0 = CM_tratamientos / CM_error
p_valor = 1 - stats.f.cdf(F_0, gl_tratamientos, gl_error)
print("\n" + "=" * 55)
print("TABLA ANOVA")
print("=" * 55)
print(f"{'Fuente':<18} {'SC':>10} {'GL':>5} {'CM':>10} {'F':>8} {'Pr > F'}")
print("-" * 65)
print(f"{'Lotes (Filas)':<18} {SC_filas:>10.2f} {3:>5} {SC_filas/3:>10.2f}")
print(f"{'Operarios (Cols)':<18} {SC_columnas:>10.2f} {3:>5} {SC_columnas/3:>10.2f}")
print(f"{'Catalizadores':<18} {SC_tratamientos:>10.2f} {3:>5} {CM_tratamientos:>10.2f} {F_0:>8.2f} {p_valor:>8.4f}")
print(f"{'Error':<18} {SC_error:>10.2f} {gl_error:>5} {CM_error:>10.2f}")
print(f"{'Total':<18} {SC_total:>10.2f} {15:>5}")
print("=" * 55)
# Comparaciones DMS
alpha = 0.05
t_val = stats.t.ppf(1 - alpha/2, gl_error)
DMS = t_val * np.sqrt(2 * CM_error / p)
print(f"\n--- COMPARACIONES DMS (α = {alpha}) ---")
print(f"DMS = {DMS:.4f}")
print(f"\n{'Comparación':<12} {'Diferencia':<10} {'Signif.'}")
print("-" * 35)
for i in range(4):
for j in range(i+1, 4):
diff = medias[i] - medias[j]
signif = abs(diff) > DMS
print(f"{tratamientos[i]} vs {tratamientos[j]:<6} {diff:>8.2f} {'Sí' if signif else 'No'}")
print(f"\n*** CONCLUSIÓN ***")
if p_valor < alpha:
print(f"p = {p_valor:.4f} < {alpha}: Se RECHAZA H0.")
print("Existe diferencia significativa entre catalizadores.")
else:
print(f"p = {p_valor:.4f} >= {alpha}: NO se rechaza H0.")
print("NO existe diferencia significativa entre catalizadores.")
========================================================
PROBLEMA 4.3 - CATALIZADORES
========================================================
Datos (tiempo de reacción en minutos):
[[73 74 77 75]
[75 79 76 74]
[77 79 76 77]
[75 76 76 79]]
Total general: 1213
Totales y medias por tratamiento:
A: Total = 297, Media = 74.25
B: Total = 302, Media = 75.50
C: Total = 311, Media = 77.75
D: Total = 303, Media = 75.75
========================================================
TABLA ANOVA
========================================================
Fuente SC GL CM F Pr > F
-----------------------------------------------------------------
Lotes (Filas) 7.1875 3 2.3958
Operarios (Cols) 16.1875 3 5.3958
Catalizadores 20.1875 3 6.7292 4.67 0.0509
Error 9.0000 6 1.5000
Total 52.5625 15
========================================================
--- COMPARACIONES DMS (α = 0.05) ---
DMS = 1.3229
Comparación Diferencia Signif.
-----------------------------------
A vs B -1.25 No
A vs C -3.50 Sí
A vs D -1.50 No
B vs C -2.25 Sí
B vs D -0.25 No
C vs D 2.00 Sí
*** CONCLUSIÓN ***
p = 0.0509 >= 0.05: NO se rechaza H0.
NO existe diferencia significativa entre catalizadores.
Interpretación: Aunque el catalizador C presenta la mayor media (77.75 minutos), el valor p de 0.0509 es marginalmente mayor que 0.05, por lo que al nivel de significancia del 5% no se rechazaría la hipótesis nula. Sin embargo, las comparaciones DMS muestran que C difiere significativamente de A y B, sugiriendo que el catalizador C podría ser el más efectivo para reducir el tiempo de reacción.