# Datos
t3 <- data.frame(
tratamiento = rep(c("Premuda", "Ayuno", "Salvado60", "Salvado80", "Malta"), each = 5),
valor = c(
94.09, 90.45, 99.38, 73.56, 74.39,
98.81, 103.55, 115.23, 129.06, 117.61,
197.18, 207.31, 177.50, 226.05, 222.74,
102.93, 117.51, 119.92, 112.01, 101.10,
83.14, 89.59, 87.76, 96.43, 82.94
)
)
# ANOVA
modelo <- aov(valor ~ tratamiento, data = t3)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## tratamiento 4 48569 12142 78.08 6.48e-12 ***
## Residuals 20 3110 156
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(modelo)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = valor ~ tratamiento, data = t3)
##
## $tratamiento
## diff lwr upr p adj
## Malta-Ayuno -24.880 -48.480671 -1.279329 0.0357276
## Premuda-Ayuno -26.478 -50.078671 -2.877329 0.0232343
## Salvado60-Ayuno 93.304 69.703329 116.904671 0.0000000
## Salvado80-Ayuno -2.158 -25.758671 21.442671 0.9986602
## Premuda-Malta -1.598 -25.198671 22.002671 0.9995895
## Salvado60-Malta 118.184 94.583329 141.784671 0.0000000
## Salvado80-Malta 22.722 -0.878671 46.322671 0.0626613
## Salvado60-Premuda 119.782 96.181329 143.382671 0.0000000
## Salvado80-Premuda 24.320 0.719329 47.920671 0.0414321
## Salvado80-Salvado60 -95.462 -119.062671 -71.861329 0.0000000
# Supongamos diferencia mínima de interés = 25, varianza residual estimada del modelo
# Varianza entre grupos (usamos la varianza de las medias de grupo)
between_var <- var(tapply(t3$valor, t3$tratamiento, mean))
# Varianza residual (dentro de grupo)
within_var <- summary(modelo)[[1]][["Mean Sq"]][2]
# Parámetros
z_alpha <- 1.96 # para 5% de significancia bilateral
z_beta <- 0.84 # para 80% de potencia
sigma2 <- 156 # varianza residual estimada
delta <- 25 # diferencia mínima de interés
# Cálculo de n por grupo
n <- (2 * (z_alpha + z_beta)^2 * sigma2) / (delta^2)
n
## [1] 3.913728
kruskal.test(valor ~ tratamiento, data = t3)
##
## Kruskal-Wallis rank sum test
##
## data: valor by tratamiento
## Kruskal-Wallis chi-squared = 20.418, df = 4, p-value = 0.0004128
# Crear los datos
blancura <- c(55, 49, 50, 47, 37, # Lavomatic
43, 44, 57, 38, 35, # Ajax
NA, 52, 49, 49, NA) # Rindex
detergente <- rep(c("Lavomatic", "Ajax", "Rindex"), each = 5)
lavadora <- rep(c("Centrales", "Icasa", "LG", "Whirpool", "Mabe"), 3)
# Crear data frame
dbca <- data.frame(blancura, detergente = factor(detergente), lavadora = factor(lavadora))
# Eliminar NA para el ANOVA inicial
modelo_completo <- aov(blancura ~ detergente + lavadora, data = dbca, na.action = na.omit)
# Ver tabla ANOVA
summary(modelo_completo)
## Df Sum Sq Mean Sq F value Pr(>F)
## detergente 2 90.83 45.42 1.739 0.254
## lavadora 4 309.67 77.42 2.964 0.114
## Residuals 6 156.73 26.12
## 2 observations deleted due to missingness
# Modelo sin bloques (como DCA)
modelo_dca <- aov(blancura ~ detergente, data = dbca, na.action = na.omit)
# Eficiencia relativa
CM_error_dca <- summary(modelo_dca)[[1]][["Mean Sq"]][2]
CM_error_dbca <- summary(modelo_completo)[[1]][["Mean Sq"]][3]
eficiencia_relativa <- CM_error_dca / CM_error_dbca
eficiencia_relativa
## [1] 1.785453
# Residuales
res <- residuals(modelo_completo)
# Normalidad: prueba de Shapiro-Wilk
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.94647, p-value = 0.5459
# Homogeneidad: gráfico y prueba de Bartlett
plot(fitted(modelo_completo), res,
main = "Residuos vs Valores ajustados",
xlab = "Valores ajustados", ylab = "Residuos")
abline(h = 0, col = "red")

# También prueba de Bartlett
bartlett.test(blancura ~ detergente, data = dbca)
##
## Bartlett test of homogeneity of variances
##
## data: blancura by detergente
## Bartlett's K-squared = 3.5141, df = 2, p-value = 0.1726
# Calcular promedios
media_total <- mean(dbca$blancura, na.rm = TRUE)
prom_detergente <- tapply(dbca$blancura, dbca$detergente, mean, na.rm = TRUE)
prom_lavadora <- tapply(dbca$blancura, dbca$lavadora, mean, na.rm = TRUE)
# Estimación para detergente = Rindex, lavadora = LG
est <- prom_detergente["Rindex"] + prom_lavadora["LG"] - media_total
est
## Rindex
## 55.46154
# Datos de medición: 9 piezas × 2 operadores × 3 repeticiones
piezas <- factor(rep(1:9, each = 6))
operadores <- factor(rep(rep(1:2, each = 3), 9))
replicacion <- factor(rep(1:3, times = 18))
# Mediciones dadas
mediciones <- c(
50, 49, 50, 50, 48, 51,
52, 52, 51, 51, 51, 51,
53, 50, 50, 54, 52, 51,
49, 51, 50, 48, 50, 51,
48, 49, 48, 48, 49, 48,
52, 50, 50, 52, 50, 50,
51, 51, 51, 51, 50, 50,
52, 50, 49, 53, 48, 50,
50, 51, 50, 51, 48, 49
)
# Crear data frame
datos <- data.frame(pieza = piezas, operador = operadores, y = mediciones)
# Ajustar modelo cruzado con repeticiones
modelo <- aov(y ~ operador * pieza + Error(pieza:operador), data = datos)
## Warning in aov(y ~ operador * pieza + Error(pieza:operador), data = datos):
## Error() model is singular
# Ver tabla ANOVA
summary(modelo)
##
## Error: pieza:operador
## Df Sum Sq Mean Sq
## operador 1 0.30 0.296
## pieza 8 47.37 5.921
## operador:pieza 8 5.37 0.671
##
## Error: Within
## Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 36 53.33 1.482
# Instalar y cargar paquete necesario
if (!require("nlme")) install.packages("nlme")
## Cargando paquete requerido: nlme
library(nlme)
# Preparar los factores
piezas <- factor(rep(1:9, each = 6))
operadores <- factor(rep(rep(1:2, each = 3), 9))
replicacion <- factor(rep(1:3, times = 18))
# Datos de medición
mediciones <- c(
50, 49, 50, 50, 48, 51,
52, 52, 51, 51, 51, 51,
53, 50, 50, 54, 52, 51,
49, 51, 50, 48, 50, 51,
48, 49, 48, 48, 49, 48,
52, 50, 50, 52, 50, 50,
51, 51, 51, 51, 50, 50,
52, 50, 49, 53, 48, 50,
50, 51, 50, 51, 48, 49
)