Se comparan los rendimientos de cuatro variedades de aceitunas de mesa en un diseño completamente al azar (DCA) desbalanceado, con 24 observaciones. El nivel de significación es α = 0.05.
Resultado principal: el ANOVA detecta diferencias entre medias (p = < 1e-04). Con estos datos, Tukey distingue dos conjuntos: Ilo y Sevillana presentan rendimientos mayores que Ascolana y Empeltre. No se detectan diferencias dentro de cada conjunto.
Esta interpretación corresponde a los datos proporcionados. Se presupone que cada observación procede de una unidad experimental independiente; el enunciado no identifica esas unidades ni documenta la aleatorización.
| Elemento | Identificación |
|---|---|
| Factor | Variedad de aceituna |
| Tratamientos | Sevillana, Ascolana, Empeltre e Ilo |
| Variable de respuesta | Rendimiento, en tn/ha; cuantitativa continua |
| Repeticiones por tratamiento | 6, 7, 5 y 6, respectivamente |
| Bloques | No se incluyen en el DCA descrito |
Los espacios vacíos corresponden a la ausencia de repeticiones adicionales en este diseño desbalanceado; no representan rendimientos de cero. Las filas de esta tabla no constituyen bloques ni parejas de observaciones.
knitr::kable(aceitunas, digits = 1, caption = "Datos originales de rendimiento (tn/ha)",
format.args = list(na.print = ""))| Sevillana | Ascolana | Empeltre | Ilo |
|---|---|---|---|
| 4.9 | 8.2 | 5.6 | 10.6 |
| 8.5 | 4.7 | 4.9 | 9.6 |
| 9.4 | 5.6 | 5.0 | 8.7 |
| 9.8 | 6.3 | 4.7 | 10.3 |
| 7.4 | 6.4 | 4.3 | 9.9 |
| 10.5 | 5.2 | NA | 8.7 |
| NA | 4.8 | NA | NA |
knitr::kable(resumen, digits = 3,
caption = "Resumen descriptivo por variedad. DE: desviación estándar.")| Variedad | n | Media | Mediana | DE | Minimo | Maximo |
|---|---|---|---|---|---|---|
| Sevillana | 6 | 8.417 | 8.95 | 2.031 | 4.9 | 10.5 |
| Ascolana | 7 | 5.886 | 5.60 | 1.220 | 4.7 | 8.2 |
| Empeltre | 5 | 4.900 | 4.90 | 0.474 | 4.3 | 5.6 |
| Ilo | 6 | 9.633 | 9.75 | 0.799 | 8.7 | 10.6 |
par(mar = c(4.5, 4.7, 1.5, 1), bty = "l", las = 1)
boxplot(rendimiento ~ variedad, data = datos,
col = adjustcolor(paleta, alpha.f = 0.35), border = paleta,
outline = FALSE, xlab = "", ylab = "Rendimiento (tn/ha)")
set.seed(24)
stripchart(rendimiento ~ variedad, data = datos, vertical = TRUE,
method = "jitter", jitter = 0.09, pch = 19,
col = "#334653", add = TRUE)
points(seq_len(nrow(resumen)), resumen$Media, pch = 23,
bg = "white", col = "#172C3A", cex = 1.5)Distribuciones de rendimiento y observaciones individuales. El rombo representa la media.
Ilo presenta el mayor promedio observado, mientras que Sevillana muestra la mayor dispersión. Las diferencias visuales deben evaluarse junto con las pruebas y el diseño experimental.
La normalidad se evalúa sobre los residuos del modelo, y la homogeneidad compara las varianzas entre variedades.
supuestos <- data.frame(
Prueba = c("Shapiro-Wilk", "Fligner-Killeen"),
Supuesto = c("Normalidad de residuos", "Igualdad de varianzas"),
Estadistico = c(unname(normalidad$statistic), unname(homogeneidad$statistic)),
p = c(normalidad$p.value, homogeneidad$p.value)
)
supuestos$Decision <- ifelse(supuestos$p < alpha,
"Se rechaza la hipótesis nula", "No se rechaza la hipótesis nula")
knitr::kable(supuestos, digits = 4, caption = "Diagnóstico de supuestos (α = 0.05)")| Prueba | Supuesto | Estadistico | p | Decision |
|---|---|---|---|---|
| Shapiro-Wilk | Normalidad de residuos | 0.9467 | 0.2299 | No se rechaza la hipótesis nula |
| Fligner-Killeen | Igualdad de varianzas | 5.8551 | 0.1189 | No se rechaza la hipótesis nula |
Shapiro-Wilk (p = 0.2299) y Fligner-Killeen (p = 0.1189) no detectan evidencia suficiente contra los supuestos evaluados. No rechazarlos no demuestra que se cumplan perfectamente, especialmente con muestras pequeñas.
par(mfrow = c(1, 2), mar = c(4.6, 4.5, 2.6, 1), bty = "l")
qqnorm(residuals(modelo), pch = 19, col = "#287D8E",
main = "Gráfico Q-Q", xlab = "Cuantiles teóricos", ylab = "Residuos")
qqline(residuals(modelo), col = "#C46B43", lwd = 2)
plot(fitted(modelo), residuals(modelo), pch = 19,
col = paleta[as.character(datos$variedad)],
xlab = "Valores ajustados (tn/ha)", ylab = "Residuos", main = "Residuos vs. ajustados")
abline(h = 0, lty = 2, col = "#6A7885")Izquierda: normalidad de residuos. Derecha: residuos frente a valores ajustados.
En el Q-Q se busca proximidad a la recta; en el gráfico de residuos se revisan dispersiones diferentes, observaciones extremas o patrones. La independencia se sustenta en el procedimiento experimental y no se comprueba con estas pruebas.
H₀: las cuatro medias poblacionales son
iguales.
H₁: al menos una media es diferente.
tabla_anova <- data.frame(Fuente = c("Variedad", "Error"),
GL = anova_tab$Df, SC = anova_tab$`Sum Sq`,
CM = anova_tab$`Mean Sq`, F = anova_tab$`F value`,
p = anova_tab$`Pr(>F)`)
knitr::kable(tabla_anova, digits = 6, caption = "Análisis de varianza del DCA")| Fuente | GL | SC | CM | F | p |
|---|---|---|---|---|---|
| Variedad | 3 | 82.89 | 27.6299 | 16.422 | 1.3e-05 |
| Error | 20 | 33.65 | 1.6825 | NA | NA |
El estadístico F es 16.42, con 3 y 20 grados de libertad. Como p = < 1e-04, se rechaza H₀. El resultado no implica que todas las variedades difieran entre sí.
Como comprobación adicional ante posibles diferencias de varianzas, Welch obtiene p = < 1e-04. Su uso no depende de demostrar igualdad de varianzas.
Se comparan todas las parejas con intervalos de confianza simultáneos del 95 % y valores p ajustados. La diferencia corresponde a primera variedad menos segunda variedad.
tabla_tukey <- data.frame(Comparacion = rownames(tukey), tukey, row.names = NULL,
check.names = FALSE)
names(tabla_tukey) <- c("Comparación", "Diferencia", "Límite inferior", "Límite superior", "p ajustado")
tabla_tukey$Significativa <- ifelse(tukey[, "p adj"] < alpha, "Sí", "No")
knitr::kable(tabla_tukey, digits = 6, caption = "Comparaciones de Tukey (tn/ha)")| Comparación | Diferencia | Límite inferior | Límite superior | p ajustado | Significativa |
|---|---|---|---|---|---|
| Ascolana-Sevillana | -2.53095 | -4.55080 | -0.5111 | 0.010957 | Sí |
| Empeltre-Sevillana | -3.51667 | -5.71507 | -1.3183 | 0.001218 | Sí |
| Ilo-Sevillana | 1.21667 | -0.87943 | 3.3128 | 0.388038 | No |
| Empeltre-Ascolana | -0.98571 | -3.11155 | 1.1401 | 0.574812 | No |
| Ilo-Ascolana | 3.74762 | 1.72777 | 5.7675 | 0.000240 | Sí |
| Ilo-Empeltre | 4.73333 | 2.53493 | 6.9317 | 0.000038 | Sí |
par(mar = c(4.5, 11, 1.5, 1), bty = "l", las = 1)
y <- rev(seq_len(nrow(tukey)))
colores <- ifelse(tukey[, "p adj"] < alpha, "#287D8E", "#8B939C")
plot(tukey[, "diff"], y, xlim = range(tukey[, c("lwr", "upr")]),
ylim = c(0.5, nrow(tukey) + 0.5), yaxt = "n", pch = 19,
col = colores, xlab = "Diferencia de medias (tn/ha)", ylab = "")
abline(v = 0, lty = 2, col = "#C46B43")
segments(tukey[, "lwr"], y, tukey[, "upr"], y, col = colores, lwd = 3)
axis(2, at = y, labels = rownames(tukey), tick = FALSE, cex.axis = 0.9)Diferencias de medias e intervalos simultáneos del 95 %. Un intervalo que cruza cero no indica diferencia significativa.
Ilo y Sevillana superan significativamente a Ascolana y Empeltre. No se detecta diferencia entre Ilo y Sevillana, ni entre Ascolana y Empeltre. La ausencia de significación no demuestra equivalencia.
Como análisis complementario basado en rangos, se evalúa la igualdad de las distribuciones entre variedades.
knitr::kable(data.frame(Prueba = "Kruskal-Wallis",
H = unname(kw$statistic), GL = unname(kw$parameter),
p = kw$p.value), digits = 6)| Prueba | H | GL | p |
|---|---|---|---|
| Kruskal-Wallis | 15.23 | 3 | 0.00163 |
Con p = 0.00163, se rechaza la hipótesis de igualdad de distribuciones. Es consistente con la existencia de diferencias globales, pero no contrasta exactamente la misma hipótesis que el ANOVA. Para interpretarlo como una comparación de medianas se requieren distribuciones de forma y dispersión similares. No sustituye automáticamente al ANOVA cuando las varianzas son diferentes.
En este DCA con 24 observaciones se detectan diferencias entre las medias de rendimiento. Tukey indica que Ilo (9.63 tn/ha) y Sevillana (8.42 tn/ha) superan a Ascolana (5.89 tn/ha) y Empeltre (4.90 tn/ha) al nivel del 5 %. Ilo tiene la mayor media observada, pero no se demuestra que supere a Sevillana.
Las pruebas de supuestos no detectan evidencia suficiente contra normalidad y homogeneidad; su interpretación se complementa con los gráficos y con la independencia y aleatorización del experimento. Kruskal-Wallis también identifica diferencias globales entre distribuciones.
Este informe calcula sus tablas y figuras desde los datos, sin
depender de archivos .RData, ventanas gráficas externas ni
paquetes estadísticos adicionales. Requiere rmarkdown y
knitr para compilarse en HTML desde RStudio.
## R version 4.6.1 (2026-06-24 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
##
## Matrix products: default
## LAPACK version 3.12.1
##
## locale:
## [1] LC_COLLATE=Spanish_Panama.utf8 LC_CTYPE=Spanish_Panama.utf8
## [3] LC_MONETARY=Spanish_Panama.utf8 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Panama.utf8
##
## time zone: America/Panama
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 xfun_0.62
## [5] cachem_1.1.0 knitr_1.52 htmltools_0.5.9 rmarkdown_2.32
## [9] lifecycle_1.0.5 cli_3.6.6 sass_0.4.10 jquerylib_0.1.4
## [13] compiler_4.6.1 tools_4.6.1 evaluate_1.0.5 bslib_0.12.0
## [17] yaml_2.3.12 rlang_1.3.0 jsonlite_2.0.0