Diseño y Análisis de Experimentos

Trabajo #1 — Modelos de Efectos Fijos (Montgomery, 9ª ed.)

Autor/a

Maira Vargas Castro

Fecha de publicación

Invalid Date

1 Introducción

Este documento presenta la solución de los cinco ejercicios asignados en el Trabajo #1 de la asignatura Diseño y Análisis de Experimentos, correspondientes al texto de Montgomery (9ª edición). Los ejercicios abarcan diseños unifactoriales de efectos fijos (3.1, 3.8, 3.28), un diseño con bloques completos al azar (4.8) y un diseño bifactorial de efectos fijos con interacción (5.12).

Para cada ejercicio se presenta: el planteamiento del problema, las hipótesis formales, el desarrollo (a mano o en R según el caso) y, sobre todo, la interpretación de cada resultado en el contexto del problema, ya que este es el componente que más peso tiene en la evaluación.


2 Ejercicio 3.1

An experimenter has conducted a single-factor experiment with four levels of the factor, and each factor level has been replicated six times. Find the P-value if the F-statistic is F₀ = 3.26.

2.1 Planteamiento

Se trata de un diseño unifactorial de efectos fijos (1FEF) con \(a = 4\) niveles y \(n = 6\) réplicas por nivel, por lo que \(N = a \times n = 24\).

Hipótesis:

\[ \begin{cases} H_0: \mu_1 = \mu_2 = \mu_3 = \mu_4 \\ H_1: \text{Al menos un par } \mu_i \neq \mu_j \end{cases} \]

Grados de libertad:

  • Numerador: \(df_1 = a - 1 = 3\)
  • Denominador: \(df_2 = N - a = 24 - 4 = 20\)

2.2 Cálculo del valor-P

F0  <- 3.26
df1 <- 3
df2 <- 20

(p_value <- 1 - pf(F0, df1, df2))
[1] 0.04300116
NotaInterpretación

El valor-P (≈ 0.043) es menor que \(\alpha = 0.05\), por lo que se rechaza \(H_0\): hay evidencia de que al menos un nivel del factor tiene una media distinta a los demás. Sin embargo, a \(\alpha=0.01\) la conclusión cambiaría (no se rechazaría), lo que indica que la evidencia es significativa pero no abrumadora.

2.3 Región de rechazo y valor-P

plot_f_region <- function(F0, df1, df2, alpha = 0.05, main = "") {
  xmax <- max(F0, qf(0.999, df1, df2)) * 1.2
  x <- seq(0, xmax, length.out = 2000)
  y <- df(x, df1, df2)

  fcrit <- qf(1 - alpha, df1, df2)
  pval  <- 1 - pf(F0, df1, df2)

  plot(x, y, type = "l", lwd = 2, las = 1,
       xlab = paste0("F ~ F(", df1, ", ", df2, ")"),
       ylab = "Densidad", main = main)

  x_crit <- x[x >= fcrit]
  polygon(c(fcrit, x_crit, max(x_crit)),
          c(0, df(x_crit, df1, df2), 0),
          col = adjustcolor("red", alpha.f = 0.3), border = NA)

  x_p <- x[x >= F0]
  polygon(c(F0, x_p, max(x_p)),
          c(0, df(x_p, df1, df2), 0),
          density = 15, col = "blue", border = NA)

  abline(v = fcrit, col = "red",  lty = 2, lwd = 2)
  abline(v = F0,    col = "blue", lwd = 2)

  legend("topright",
         legend = c(paste0("Región de rechazo (α=", alpha, ")"),
                    paste0("Valor-P = ", format(pval, digits = 3))),
         fill = c(adjustcolor("red", alpha.f = 0.3), "blue"),
         density = c(NA, 15), bty = "n")
}

plot_f_region(F0 = 3.26, df1 = 3, df2 = 20, alpha = 0.05,
              main = "Ejercicio 3.1: F(3, 20)")

NotaInterpretación

\(F_0\) queda apenas a la derecha de \(F_{crit}=3.10\): la región de rechazo (roja) y el área del valor-P (rayada) casi coinciden, lo cual confirma gráficamente el resultado ajustado (P cercano, pero por debajo, de 0.05).


3 Ejercicio 3.8

The ANOVA of an experiment is shown below. Fill in the blanks. Is there any way to approach the observed power? Explain.

Fuente GL SC CM F P
Factor ? ? 246.93 ? ?
Error 25 186.53
Total 29 1174.24

3.1 Deducción de los valores faltantes

A partir de \(N-1=29\) y \(N-a=25\) se deduce que \(N=30\) y \(a=5\) (por lo tanto \(n=6\)). Con esto:

SS_total <- 1174.24
df_total <- 29
SS_error <- 186.53
df_error <- 25

N <- df_total + 1
a <- N - df_error
n <- N / a
df_factor <- a - 1

SS_factor <- SS_total - SS_error
MS_factor <- SS_factor / df_factor
MS_error  <- SS_error  / df_error
F0        <- MS_factor / MS_error
p_value   <- 1 - pf(F0, df_factor, df_error)

data.frame(a, n, df_factor, SS_factor, MS_factor, MS_error, F0, p_value)
  a n df_factor SS_factor MS_factor MS_error       F0      p_value
1 5 6         4    987.71  246.9275   7.4612 33.09488 1.184779e-09

Tabla ANOVA completa:

Fuente GL SC CM F₀ P
Factor 4 987.71 246.93 33.09 ≈ 1.18e-09
Error 25 186.53 7.46
Total 29 1174.24
NotaInterpretación

El valor-P es prácticamente cero: la evidencia contra \(H_0\) es abrumadora. Además, \(\eta^2 = SC_{Factor}/SC_{Total}=0.841\), es decir, el 84.1% de la variabilidad de la respuesta se explica por el factor — un efecto extremadamente grande.

3.2 ¿Es posible aproximar la potencia observada?

Sí: aunque no tenemos las medias individuales, \(\eta^2\) permite estimar el tamaño de efecto de Cohen y de ahí la potencia con pwr.anova.test().

eta2 <- SS_factor / SS_total
f    <- sqrt(eta2 / (1 - eta2))

pwr.anova.test(k = a, n = n, f = f, sig.level = 0.05)

     Balanced one-way analysis of variance power calculation 

              k = 5
              n = 6
              f = 2.301126
      sig.level = 0.05
          power = 1

NOTE: n is number in each group
NotaInterpretación

Con un efecto tan grande (\(f \approx 2.3\)), la potencia observada es prácticamente 1 (100%). Esto es consistente con el valor-P casi nulo: el diseño tenía capacidad más que suficiente para detectar un efecto de esta magnitud, por lo que el riesgo de un Error Tipo II es insignificante.


4 Ejercicio 3.28

Four different designs for a digital computer circuit are being studied to compare the amount of noise present.

4.1 Lectura de datos y análisis exploratorio

datos_328 <- data.frame(
  Design = factor(rep(1:4, each = 5)),
  y = c(19, 20, 19, 30, 8,
        80, 61, 73, 56, 80,
        47, 26, 25, 35, 50,
        95, 46, 83, 78, 97)
)

boxplot(y ~ Design, data = datos_328, las = 1, col = 2:5,
        xlab = "Circuit Design", ylab = "Noise Observed",
        main = "Ruido observado por diseño de circuito")

NotaInterpretación

El Diseño 1 muestra visiblemente el menor ruido y el Diseño 4 el mayor, con 2 y 3 en posiciones intermedias. Se observan datos atípicos en los diseños 1 y 4, lo que anticipa una posible violación de normalidad.

4.2 1. ¿Hay la misma cantidad de ruido en los cuatro diseños? (\(\alpha=0.05\))

Hipótesis: \(H_0: \mu_1=\mu_2=\mu_3=\mu_4\) vs. \(H_1:\) al menos un par distinto.

fit_328 <- lm(y ~ Design, data = datos_328)
anova(fit_328)
Analysis of Variance Table

Response: y
          Df  Sum Sq Mean Sq F value    Pr(>F)    
Design     3 12042.0  4014.0   21.78 6.797e-06 ***
Residuals 16  2948.8   184.3                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(fit_328)$r.squared
[1] 0.8032927
NotaInterpretación

El valor-P (≈ 0.000007) lleva a rechazar \(H_0\): no todos los diseños producen el mismo ruido. Además, \(R^2=0.80\), es decir, el diseño de circuito explica el 80% de la variabilidad del ruido observado.

4.3 2. Análisis de residuales — ¿se cumplen los supuestos?

r_328 <- rstudent(fit_328)

par(mfrow = c(1, 2))
qqnorm(r_328, las = 1); qqline(r_328, col = 2, lty = 2)
plot(fit_328$fitted.values, r_328, las = 1,
     xlab = "Valores ajustados", ylab = "Residual estudentizado",
     main = "Residuales vs. Ajustados")
abline(h = 0, col = 2, lty = 2)

shapiro.test(r_328)

    Shapiro-Wilk normality test

data:  r_328
W = 0.8682, p-value = 0.01093
bartlett.test(y ~ Design, data = datos_328)

    Bartlett test of homogeneity of variances

data:  y by Design
Bartlett's K-squared = 3.6893, df = 3, p-value = 0.297
set.seed(123)
durbinWatsonTest(fit_328)
 lag Autocorrelation D-W Statistic p-value
   1      -0.2969208      2.493502   0.652
 Alternative hypothesis: rho != 0
NotaInterpretación

Varianza constante (Bartlett, p=0.30) e independencia (Durbin-Watson, p > 0.05) se cumplen. Sin embargo, normalidad se rechaza (Shapiro-Wilk, p=0.011): el QQ-plot muestra un punto muy alejado de la línea de referencia (Diseño 4, réplica 2, residual ≈ −3.75). Esto sugiere revisar ese dato atípico; dado que el ANOVA es razonablemente robusto a violaciones moderadas con diseños balanceados, la conclusión general probablemente se mantiene, pero debe reportarse esta limitación.

4.4 3. ¿Qué diseño seleccionaría? (menor ruido es mejor)

TukeyHSD(aov(fit_328), "Design")
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = fit_328)

$Design
     diff        lwr       upr     p adj
2-1  50.8  26.235183 75.364817 0.0001159
3-1  17.4  -7.164817 41.964817 0.2194816
4-1  60.6  36.035183 85.164817 0.0000147
3-2 -33.4 -57.964817 -8.835183 0.0064088
4-2   9.8 -14.764817 34.364817 0.6703350
4-3  43.2  18.635183 67.764817 0.0006406
NotaInterpretación

El Diseño 1 tiene el menor ruido promedio (19.2) y es estadísticamente indistinguible del Diseño 3 (p=0.22), pero significativamente mejor que 2 y 4. Se recomienda el Diseño 1.

4.5 4. Tamaño de efecto y potencia observada

aov_tab <- anova(fit_328)
SS_factor_328 <- aov_tab$`Sum Sq`[1]
SS_error_328  <- aov_tab$`Sum Sq`[2]
eta2_328 <- SS_factor_328 / (SS_factor_328 + SS_error_328)
f_328 <- sqrt(eta2_328 / (1 - eta2_328))

pwr.anova.test(k = 4, n = 5, f = f_328, sig.level = 0.05)

     Balanced one-way analysis of variance power calculation 

              k = 4
              n = 5
              f = 2.020815
      sig.level = 0.05
          power = 0.9999999

NOTE: n is number in each group
NotaInterpretación

\(\eta^2=0.80\) y \(f\approx2.02\) (efecto muy grande) producen una potencia ≈ 1. El experimento tuvo sensibilidad estadística más que suficiente para respaldar la decisión de ingeniería de elegir el Diseño 1.


5 Ejercicio 4.8

A chemist wishes to test the effect of four chemical agents on the strength of a particular type of cloth… she decides to use a RCBD, with the bolts of cloth considered as blocks.

5.1 Lectura de datos y análisis exploratorio

datos_48 <- data.frame(
  Chemical = factor(rep(1:4, each = 5)),
  Bolt     = factor(rep(1:5, times = 4)),
  y = c(73, 68, 74, 71, 67,
        73, 67, 75, 72, 70,
        75, 68, 78, 73, 68,
        73, 71, 75, 75, 69)
)

par(mfrow = c(1, 2))
boxplot(y ~ Chemical, data = datos_48, col = 2:5, las = 1,
        xlab = "Chemical", ylab = "Tensile Strength", main = "Por Chemical")
boxplot(y ~ Bolt, data = datos_48, col = rainbow(5), las = 1,
        xlab = "Bolt (Bloque)", ylab = "Tensile Strength", main = "Por Bloque")

NotaInterpretación

La dispersión de medianas entre bloques (bolts) es visiblemente mayor que entre químicos, lo que sugiere que gran parte de la variabilidad se debe al bolt y justifica haberlo usado como bloque.

5.2 Modelo DBCA y prueba de hipótesis

Hipótesis (para el efecto de interés, Chemical):

\[ \begin{cases} H_0: \tau_1=\tau_2=\tau_3=\tau_4=0 \\ H_1: \text{al menos un } \tau_i \neq 0 \end{cases} \]

fit_48 <- lm(y ~ Chemical + Bolt, data = datos_48)
anova(fit_48)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq F value    Pr(>F)    
Chemical   3  12.95   4.317  2.3761    0.1211    
Bolt       4 157.00  39.250 21.6055 2.059e-05 ***
Residuals 12  21.80   1.817                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
NotaInterpretación

El factor Chemical no es significativo (p=0.121): no hay evidencia de que los químicos difieran en su efecto sobre la resistencia. En cambio, Bolt sí es altamente significativo (p<0.0001), confirmando que existía variabilidad real entre rollos de tela y que bloquear fue la decisión correcta: de no haberlo hecho, esa variabilidad habría inflado el error experimental y podría haber ocultado o distorsionado el efecto del químico.

5.3 Comparaciones múltiples y validación de supuestos

TukeyHSD(aov(fit_48), "Chemical")
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = fit_48)

$Chemical
    diff        lwr      upr     p adj
2-1  0.8 -1.7308322 3.330832 0.7852734
3-1  1.8 -0.7308322 4.330832 0.2042593
4-1  2.0 -0.5308322 4.530832 0.1417326
3-2  1.0 -1.5308322 3.530832 0.6540138
4-2  1.2 -1.3308322 3.730832 0.5182726
4-3  0.2 -2.3308322 2.730832 0.9952030
r_48 <- rstudent(fit_48)
par(mfrow = c(1, 2))
qqnorm(r_48, las = 1); qqline(r_48, col = 2, lty = 2)
plot(fit_48$fitted.values, r_48, las = 1,
     xlab = "Valores ajustados", ylab = "Residual estudentizado",
     main = "Residuales vs. Ajustados")
abline(h = 0, col = 2, lty = 2)

shapiro.test(r_48)

    Shapiro-Wilk normality test

data:  r_48
W = 0.90145, p-value = 0.04391
ncvTest(fit_48)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 0.00451298, Df = 1, p = 0.94644
set.seed(123)
durbinWatsonTest(fit_48)
 lag Autocorrelation D-W Statistic p-value
   1      -0.3102064      2.595413   0.492
 Alternative hypothesis: rho != 0
NotaInterpretación

Ningún par de químicos difiere significativamente entre sí (consistente con el ANOVA). En cuanto a supuestos: la varianza es constante (p=0.95) y los residuales son independientes (Durbin-Watson, p > 0.05); la normalidad es marginal (Shapiro-Wilk p=0.044, muy cerca del límite), por lo que el modelo es aceptable pero merece observarse con cautela.

Conclusión general: no hay evidencia de que el tipo de químico afecte la resistencia de la tela; las diferencias observadas en la tabla original se debían principalmente a la variabilidad entre bolts, correctamente aislada gracias al diseño de bloques.


6 Ejercicio 5.12

Johnson and Leone describe an experiment to investigate warping of copper plates. The two factors studied were the temperature and the copper content of the plates.

6.1 Lectura de datos y análisis exploratorio

datos_512 <- data.frame(
  Temp       = factor(rep(c(50, 75, 100, 125), each = 8)),
  Copper     = factor(rep(rep(c(40, 60, 80, 100), each = 2), times = 4)),
  Temp_num   = rep(c(50, 75, 100, 125), each = 8),
  Copper_num = rep(rep(c(40, 60, 80, 100), each = 2), times = 4),
  y = c(17,20, 16,21, 24,22, 28,27,
        12,9,  18,13, 17,12, 27,31,
        16,12, 18,21, 25,23, 30,23,
        21,17, 23,21, 23,22, 29,31)
)

par(mfrow = c(1, 2))
boxplot(y ~ Temp, data = datos_512, col = 2:5, las = 1,
        xlab = "Temperature", ylab = "Warping", main = "Por Temperatura")
boxplot(y ~ Copper, data = datos_512, col = 3:6, las = 1,
        xlab = "Copper Content (%)", ylab = "Warping", main = "Por % de Cobre")

with(datos_512, interaction.plot(Copper, Temp, y, las = 1,
     col = c(2,3,4,6), lwd = 2, type = "b", pch = 16,
     xlab = "Copper Content (%)", ylab = "Warping promedio",
     trace.label = "Temp (°C)",
     main = "Interacción Temperatura x Contenido de Cobre"))

NotaInterpretación

El pandeo aumenta claramente con el % de cobre, casi sin importar la temperatura. Las líneas del gráfico de interacción son aproximadamente paralelas (no se cruzan de forma dramática), lo que sugiere que la interacción, de existir, es leve.

6.2 1. ¿Afecta cada factor el pandeo? ¿Hay interacción? (\(\alpha=0.05\))

Hipótesis:

\[ \begin{cases} H_0: \gamma_{ij}=0 \ \ \forall i,j \quad \text{(interacción)}\\ H_0: \alpha_i = 0 \ \ \forall i \quad \text{(Temperatura)}\\ H_0: \beta_j = 0 \ \ \forall j \quad \text{(Cobre)} \end{cases} \]

fit_512 <- lm(y ~ Temp * Copper, data = datos_512)
anova(fit_512)
Analysis of Variance Table

Response: y
            Df Sum Sq Mean Sq F value   Pr(>F)    
Temp         3 156.09  52.031  7.6728 0.002127 ** 
Copper       3 698.34 232.781 34.3272 3.35e-07 ***
Temp:Copper  9 113.78  12.642  1.8643 0.132748    
Residuals   16 108.50   6.781                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
NotaInterpretación

La interacción no es significativa (p=0.133) → se interpreta con los efectos principales. Tanto Temperatura (p=0.0021) como Contenido de Cobre (p<0.0001) son significativos: ambos factores afectan el pandeo, siendo el efecto del cobre mucho más fuerte (mayor SC).

Dado que la interacción no es significativa, se reajusta el modelo aditivo para interpretar los efectos principales de forma más limpia:

fit_512_add <- lm(y ~ Temp + Copper, data = datos_512)
anova(fit_512_add)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq F value   Pr(>F)    
Temp       3 156.09  52.031   5.852 0.003589 ** 
Copper     3 698.34 232.781  26.181 6.98e-08 ***
Residuals 25 222.28   8.891                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

6.3 2. ¿Se pueden extrapolar conclusiones a la población a partir de los residuales?

r_512 <- rstudent(fit_512)
par(mfrow = c(1, 2))
qqnorm(r_512, las = 1); qqline(r_512, col = 2, lty = 2)
plot(fit_512$fitted.values, r_512, las = 1,
     xlab = "Valores ajustados", ylab = "Residual estudentizado",
     main = "Residuales vs. Ajustados")
abline(h = 0, col = 2, lty = 2)

shapiro.test(r_512)

    Shapiro-Wilk normality test

data:  r_512
W = 0.96235, p-value = 0.318
ncvTest(fit_512)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 0.2565838, Df = 1, p = 0.61248
set.seed(123)
durbinWatsonTest(fit_512)
 lag Autocorrelation D-W Statistic p-value
   1      -0.6059908      3.182028   0.304
 Alternative hypothesis: rho != 0
NotaInterpretación

Los tres supuestos (normalidad p=0.32, varianza constante p=0.61, independencia con Durbin-Watson p > 0.05) se cumplen. Por lo tanto, sí es válido generalizar las conclusiones del ANOVA: el modelo es adecuado y las inferencias sobre los efectos de temperatura y cobre son estadísticamente confiables.

6.4 3. ¿Qué % de cobre especificaría para minimizar el pandeo?

TukeyHSD(aov(fit_512_add), "Copper")
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = fit_512_add)

$Copper
         diff        lwr       upr     p adj
60-40   3.375 -0.7259616  7.475962 0.1339553
80-40   5.500  1.3990384  9.600962 0.0056569
100-40 12.750  8.6490384 16.850962 0.0000000
80-60   2.125 -1.9759616  6.225962 0.4959857
100-60  9.375  5.2740384 13.475962 0.0000080
100-80  7.250  3.1490384 11.350962 0.0002930
with(datos_512, tapply(y, Copper, mean))
    40     60     80    100 
15.500 18.875 21.000 28.250 
NotaInterpretación

El pandeo aumenta monótonamente con el cobre (medias: 15.5, 18.9, 21.0, 28.25 para 40/60/80/100%). Todas las comparaciones con 100% son significativas, y 40% difiere de 80% y 100%. Para minimizar el pandeo se recomienda 40% de cobre, el nivel con menor pandeo promedio.

6.5 4. ¿Cambia la recomendación si la temperatura no se puede controlar?

NotaInterpretación

No cambia la elección del nivel óptimo de cobre. Como la interacción no fue significativa, el efecto del cobre sobre el pandeo es consistente sin importar la temperatura ambiente — el 40% de cobre sigue siendo la mejor opción incluso si la temperatura varía de forma incontrolada en el entorno de uso.

6.6 5. Potencia observada (pwr.2way del paquete pwr2)

## tamaños de efecto a partir de la tabla ANOVA con interaccion
tab_int <- anova(fit_512)
SS_Temp   <- tab_int$`Sum Sq`[1]
SS_Copper <- tab_int$`Sum Sq`[2]
SS_AB     <- tab_int$`Sum Sq`[3]
SS_Error  <- tab_int$`Sum Sq`[4]
SS_Total  <- sum(tab_int$`Sum Sq`)

f_Temp   <- sqrt((SS_Temp  /SS_Total) / (1 - SS_Temp  /SS_Total))
f_Copper <- sqrt((SS_Copper/SS_Total) / (1 - SS_Copper/SS_Total))

## si el paquete 'pwr2' esta disponible, usamos directamente pwr.2way()
if (requireNamespace("pwr2", quietly = TRUE)) {
  library(pwr2)
  print(pwr.2way(a = 4, b = 4, alpha = 0.05,
                  size.A = 2, size.B = 2,
                  f.A = f_Temp, f.B = f_Copper))
} else {
  ## si no esta disponible, replicamos su algoritmo interno
  ## (formulas identicas a las usadas por pwr2::pwr.2way, ver
  ##  https://github.com/cran/pwr2/blob/master/R/pwr.2way.R)
  a <- 4; b <- 4; size.A <- 2; size.B <- 2; alpha <- 0.05

  N_A <- size.A * a * b
  lambda_A <- N_A * f_Temp^2
  qA <- qf(alpha, a - 1, N_A - a - b + 1, lower.tail = FALSE)
  power_A <- pf(qA, a - 1, N_A - a - b + 1, lambda_A, lower.tail = FALSE)

  N_B <- size.B * a * b
  lambda_B <- N_B * f_Copper^2
  qB <- qf(alpha, b - 1, N_B - a - b + 1, lower.tail = FALSE)
  power_B <- pf(qB, b - 1, N_B - a - b + 1, lambda_B, lower.tail = FALSE)

  data.frame(f.A = f_Temp, f.B = f_Copper,
             power.A = power_A, power.B = power_B,
             power = min(power_A, power_B))
}
        f.A      f.B   power.A   power.B     power
1 0.4117668 1.358543 0.4122454 0.9999965 0.4122454
NotaInterpretación

La potencia para detectar el efecto de Temperatura es moderada (≈ 0.41), mientras que para Cobre es prácticamente 1. Esto es consistente con sus tamaños de efecto (\(f_{Temp}\approx0.41\) vs. \(f_{Copper}\approx1.36\)): el experimento tenía sensibilidad de sobra para detectar el efecto del cobre, pero solo una probabilidad moderada de detectar el efecto (más sutil) de la temperatura si este fuera más pequeño de lo observado.

6.7 6. Componentes de varianza si ambos factores fueran aleatorios

MS_A  <- tab_int$`Mean Sq`[1]  # Temp
MS_B  <- tab_int$`Mean Sq`[2]  # Copper
MS_AB <- tab_int$`Mean Sq`[3]  # Interaccion
MS_E  <- tab_int$`Mean Sq`[4]  # Error

a <- 4; b <- 4; n <- 2

sigma2_e  <- MS_E
sigma2_ab <- (MS_AB - MS_E) / n
sigma2_A  <- (MS_A  - MS_AB) / (b * n)
sigma2_B  <- (MS_B  - MS_AB) / (a * n)

comp <- data.frame(
  Componente = c("Temperatura (A)", "Cobre (B)", "Interaccion (AB)", "Error"),
  Varianza   = c(sigma2_A, sigma2_B, sigma2_ab, sigma2_e)
)
comp$Porcentaje <- round(100 * comp$Varianza / sum(comp$Varianza), 1)
comp
        Componente  Varianza Porcentaje
1  Temperatura (A)  4.923611       11.7
2        Cobre (B) 27.517361       65.3
3 Interaccion (AB)  2.930556        7.0
4            Error  6.781250       16.1
NotaInterpretación

Si ambos factores fueran aleatorios, el contenido de cobre explicaría ≈ 65% de la variabilidad total, la temperatura ≈ 12%, la interacción ≈ 7% y el error ≈ 16%. Esto refuerza la conclusión de que el cobre es, con diferencia, la fuente de variación más influyente en el pandeo.

6.8 7. Regresión lineal: estimar el pandeo a 80°C y 90% de cobre

fit_lm <- lm(y ~ Temp_num + Copper_num, data = datos_512)
summary(fit_lm)

Call:
lm(formula = y ~ Temp_num + Copper_num, data = datos_512)

Residuals:
     Min       1Q   Median       3Q      Max 
-10.5188  -1.7875   0.7813   2.3781   6.3687 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  3.93125    2.97332   1.322    0.196    
Temp_num     0.03250    0.02344   1.387    0.176    
Copper_num   0.20188    0.02930   6.891 1.43e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.706 on 29 degrees of freedom
Multiple R-squared:  0.6301,    Adjusted R-squared:  0.6046 
F-statistic:  24.7 on 2 and 29 DF,  p-value: 5.456e-07
predict(fit_lm, newdata = data.frame(Temp_num = 80, Copper_num = 90))
   1 
24.7 
NotaInterpretación

El modelo de regresión lineal (tratando ambos factores como continuos) predice un pandeo de ≈ 24.7 unidades a 80 °C y 90% de cobre. El coeficiente de Copper_num (≈0.20, p<0.0001) confirma que el cobre es el predictor dominante del pandeo, mientras que Temp_num no resulta significativo en este modelo lineal simple (p=0.18), consistente con su efecto más moderado detectado en el ANOVA.


7 Conclusiones generales

  • En los ejercicios 3.1, 3.8 y 3.28 (1FEF), el factor estudiado tuvo un efecto estadísticamente significativo sobre la respuesta, con tamaños de efecto que van de moderados (3.1) a muy grandes (3.8 y 3.28).
  • En el ejercicio 4.8, el diseño de bloques fue clave: el factor de interés (químico) no resultó significativo, pero el bloqueo (bolt) sí, validando la decisión de diseño experimental tomada por el investigador.
  • En el ejercicio 5.12, ambos factores (temperatura y cobre) afectan el pandeo de forma aditiva (sin interacción relevante), siendo el contenido de cobre el factor dominante; se recomienda usar el menor nivel de cobre (40%) para minimizar el pandeo, recomendación que es robusta incluso si la temperatura no puede controlarse.