1 Resumen

Este informe compara el rendimiento (tn/ha) de cuatro variedades de aceituna —Sevillana, Ascolana, Empeltre e Ilo— bajo un Diseño Completamente al Azar (DCA) con tamaños de muestra desiguales. Se examinan los supuestos del ANOVA mediante las pruebas de Shapiro–Wilk y Levene, y se presentan el ANOVA de un factor y la prueba no paramétrica de Kruskal–Wallis.

Hallazgos principales con los datos analizados:

  • El ANOVA detectó diferencias estadísticamente significativas entre las medias de rendimiento: \(F(3,20)=16.42\), \(p<0.001\).
  • Shapiro–Wilk no detectó evidencia suficiente para rechazar la normalidad de los residuos (\(p=0.2299\)).
  • Levene no detectó diferencias significativas entre las varianzas (\(p=0.1623\)).
  • Kruskal–Wallis también detectó diferencias entre las distribuciones/rangos de los grupos (\(\chi^2(3)=15.23\), \(p=0.00163\)).

Las pruebas globales indican que al menos una variedad difiere, pero no identifican por sí solas qué pares de variedades son diferentes. Para ello se recomienda un análisis post hoc.

2 1. Datos y diseño

Se consideran 24 observaciones distribuidas de forma desigual entre cuatro variedades. El factor explicativo es la variedad y la variable respuesta es el rendimiento en toneladas por hectárea.

datos_dca <- data.frame(
  Variedad = factor(c(
    rep("Sevillana", 6),
    rep("Ascolana", 7),
    rep("Empeltre", 5),
    rep("Ilo", 6)
  ), levels = c("Sevillana", "Ascolana", "Empeltre", "Ilo")),
  Rendimiento = c(
    4.9, 8.5, 9.4, 9.8, 7.4, 10.5,
    8.2, 4.7, 5.6, 6.3, 6.4, 5.2, 4.8,
    5.6, 4.9, 5.0, 4.7, 4.3,
    10.6, 9.6, 8.7, 10.3, 9.9, 8.7
  )
)

kable(head(datos_dca), caption = "Primeras seis observaciones")
Primeras seis observaciones
Variedad Rendimiento
Sevillana 4.9
Sevillana 8.5
Sevillana 9.4
Sevillana 9.8
Sevillana 7.4
Sevillana 10.5

2.1 1.1 Resumen descriptivo

tabla_desc <- datos_dca |>
  group_by(Variedad) |>
  summarise(
    n = n(),
    Media = mean(Rendimiento),
    Desviacion_estandar = sd(Rendimiento),
    Mediana = median(Rendimiento),
    Minimo = min(Rendimiento),
    Maximo = max(Rendimiento),
    .groups = "drop"
  ) |>
  mutate(across(where(is.numeric), ~ round(.x, 3)))

kable(tabla_desc, caption = "Estadísticos descriptivos del rendimiento por variedad")
Estadísticos descriptivos del rendimiento por variedad
Variedad n Media Desviacion_estandar Mediana Minimo Maximo
Sevillana 6 8.417 2.031 8.95 4.9 10.5
Ascolana 7 5.886 1.220 5.60 4.7 8.2
Empeltre 5 4.900 0.474 4.90 4.3 5.6
Ilo 6 9.633 0.799 9.75 8.7 10.6

2.2 1.2 Gráfico de medias e incertidumbre

Las barras muestran la media de cada variedad y los intervalos representan media ± error estándar. Estos intervalos son descriptivos y no sustituyen las comparaciones post hoc.

medias <- datos_dca |>
  group_by(Variedad) |>
  summarise(
    n = n(),
    media = mean(Rendimiento),
    ee = sd(Rendimiento) / sqrt(n),
    .groups = "drop"
  )

ggplot(medias, aes(x = Variedad, y = media)) +
  geom_col(fill = "steelblue", alpha = 0.8, width = 0.65) +
  geom_errorbar(aes(ymin = media - ee, ymax = media + ee), width = 0.15) +
  geom_text(aes(label = sprintf("%.2f", media)), vjust = -0.7, size = 4) +
  labs(
    title = "Rendimiento medio por variedad",
    subtitle = "Barras de error: ± 1 error estándar",
    x = "Variedad de aceituna",
    y = "Rendimiento medio (tn/ha)"
  ) +
  theme_minimal(base_size = 13) +
  expand_limits(y = max(medias$media + medias$ee) + 0.8)

3 2. Visualización de la distribución

El diagrama de cajas permite comparar medianas, dispersión y posibles valores atípicos. Los puntos representan observaciones individuales.

ggplot(datos_dca, aes(x = Variedad, y = Rendimiento, fill = Variedad)) +
  geom_boxplot(alpha = 0.65, outlier.shape = 16, outlier.size = 2) +
  geom_jitter(width = 0.12, size = 2.2, color = "black", alpha = 0.65) +
  scale_fill_brewer(palette = "Set2") +
  labs(
    title = "Distribución del rendimiento por variedad",
    subtitle = "Diseño Completamente al Azar (DCA)",
    x = "Variedad de aceituna",
    y = "Rendimiento (tn/ha)"
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position = "none",
        plot.title = element_text(face = "bold", hjust = 0.5),
        plot.subtitle = element_text(hjust = 0.5),
        panel.grid.minor = element_blank())

4 3. Modelo y evaluación de supuestos

Se ajusta un modelo lineal de un factor. La normalidad se evalúa sobre los residuos del modelo, mientras que la homogeneidad de varianzas se examina con la prueba de Levene centrada en la mediana.

modelo_lineal <- lm(Rendimiento ~ Variedad, data = datos_dca)
residuos <- residuals(modelo_lineal)

4.1 3.1 Normalidad de los residuos: Shapiro–Wilk

Hipótesis:

  • \(H_0\): los residuos siguen una distribución normal.
  • \(H_1\): los residuos no siguen una distribución normal.
prueba_normalidad <- shapiro.test(residuos)
tabla_shapiro <- data.frame(
  Prueba = "Shapiro-Wilk",
  Estadistico_W = unname(prueba_normalidad$statistic),
  p_valor = prueba_normalidad$p.value,
  Decision = ifelse(prueba_normalidad$p.value < 0.05,
                    "Rechazar H0: evidencia contra normalidad",
                    "No rechazar H0: no hay evidencia suficiente contra normalidad")
)
kable(tabla_shapiro |> mutate(across(where(is.numeric), ~ round(.x, 4))),
      caption = "Prueba de normalidad de los residuos")
Prueba de normalidad de los residuos
Prueba Estadistico_W p_valor Decision
Shapiro-Wilk 0.9467 0.2299 No rechazar H0: no hay evidencia suficiente contra normalidad

Con el resultado proporcionado (\(W=0.94672\), \(p=0.2299\)), al nivel de significación de 0.05 no se rechaza la hipótesis nula. Esto significa que no se encontró evidencia estadística suficiente contra la normalidad; no demuestra que los residuos sean perfectamente normales.

4.2 3.2 Homogeneidad de varianzas: Levene

Hipótesis:

  • \(H_0\): las varianzas de las cuatro variedades son iguales.
  • \(H_1\): al menos una varianza difiere.
prueba_homocedasticidad <- car::leveneTest(Rendimiento ~ Variedad,
                                            data = datos_dca,
                                            center = median)
tabla_levene <- data.frame(
  Prueba = "Levene (centrada en la mediana)",
  F = prueba_homocedasticidad[1, "F value"],
  gl1 = prueba_homocedasticidad[1, "Df"],
  gl2 = prueba_homocedasticidad[2, "Df"],
  p_valor = prueba_homocedasticidad[1, "Pr(>F)"]
)
kable(tabla_levene |> mutate(across(where(is.numeric), ~ round(.x, 4))),
      caption = "Prueba de homogeneidad de varianzas")
Prueba de homogeneidad de varianzas
Prueba F gl1 gl2 p_valor
Levene (centrada en la mediana) 1.899 3 20 0.1623

Con el resultado proporcionado (\(F=1.899\), \(p=0.1623\)), no se rechaza la igualdad de varianzas al 5 %. Por tanto, no se detectó evidencia suficiente de heterocedasticidad mediante esta prueba.

4.3 3.3 Gráficos de diagnóstico de residuos

par(mfrow = c(2, 2))
plot(modelo_lineal)

par(mfrow = c(1, 1))

Los gráficos permiten revisar patrones en residuos frente a valores ajustados, la forma de la distribución y observaciones potencialmente influyentes. La interpretación debe combinarse con las pruebas formales y el conocimiento del experimento.

5 4. ANOVA de un factor

Hipótesis:

  • \(H_0\): las medias poblacionales de rendimiento son iguales en las cuatro variedades.
  • \(H_1\): al menos una media poblacional es diferente.
resultado_anova <- aov(Rendimiento ~ Variedad, data = datos_dca)
tabla_anova <- broom::tidy(resultado_anova)
kable(tabla_anova |> mutate(across(where(is.numeric), ~ round(.x, 5))),
      caption = "Tabla ANOVA de un factor")
Tabla ANOVA de un factor
term df sumsq meansq statistic p.value
Variedad 3 82.88976 27.62992 16.42183 1e-05
Residuals 20 33.65024 1.68251 NA NA

Con los resultados proporcionados, \(F(3,20)=16.42\) y \(p=1.28\times10^{-5}\). Como \(p<0.05\), se rechaza la hipótesis nula de igualdad de medias. Existe evidencia estadística de diferencias en el rendimiento medio entre las variedades. El ANOVA global no indica qué variedades difieren entre sí.

5.1 4.1 Tamaño del efecto

El eta cuadrado (\(\eta^2\)) estima la proporción de variabilidad total del rendimiento asociada con la variedad en esta muestra.

tab_aov <- summary(resultado_anova)[[1]]
eta2 <- tab_aov["Variedad", "Sum Sq"] / sum(tab_aov[, "Sum Sq"])
kable(data.frame(Indicador = "Eta cuadrado (eta²)",
                 Valor = round(eta2, 4),
                 Porcentaje = paste0(round(100 * eta2, 1), "%")),
      caption = "Tamaño del efecto de la variedad")
Tamaño del efecto de la variedad
Indicador Valor Porcentaje
Eta cuadrado (eta²) 0.7113 71.1%

Este valor describe la magnitud de la asociación observada en estos datos; no implica por sí solo causalidad fuera de las condiciones del experimento.

6 5. Prueba no paramétrica de Kruskal–Wallis

Kruskal–Wallis compara los rangos de los grupos y puede ser útil como análisis complementario cuando se desea una alternativa no paramétrica al ANOVA. No contrasta exactamente la igualdad de medias.

resultado_kruskal <- kruskal.test(Rendimiento ~ Variedad, data = datos_dca)
tabla_kruskal <- data.frame(
  Prueba = "Kruskal-Wallis",
  Chi_cuadrado = unname(resultado_kruskal$statistic),
  gl = unname(resultado_kruskal$parameter),
  p_valor = resultado_kruskal$p.value,
  Decision = ifelse(resultado_kruskal$p.value < 0.05,
                    "Rechazar H0: existen diferencias entre grupos",
                    "No rechazar H0")
)
kable(tabla_kruskal |> mutate(across(where(is.numeric), ~ round(.x, 5))),
      caption = "Resultado de Kruskal–Wallis")
Resultado de Kruskal–Wallis
Prueba Chi_cuadrado gl p_valor Decision
Kruskal-Wallis 15.22975 3 0.00163 Rechazar H0: existen diferencias entre grupos

Con el resultado proporcionado (\(\chi^2(3)=15.23\), \(p=0.00163\)), se rechaza la hipótesis nula al 5 %. La conclusión coincide con el ANOVA en que hay diferencias globales entre variedades.

7 6. Comparaciones posteriores recomendadas

Dado que el ANOVA global resultó significativo, se pueden realizar comparaciones por pares con ajuste por multiplicidad. Tukey HSD es una opción habitual para comparar todas las medias cuando los supuestos del ANOVA son razonables.

resultado_tukey <- TukeyHSD(resultado_anova)
resultado_tukey
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Rendimiento ~ Variedad, data = datos_dca)
## 
## $Variedad
##                          diff        lwr        upr     p adj
## Ascolana-Sevillana -2.5309524 -4.5508023 -0.5111025 0.0109566
## Empeltre-Sevillana -3.5166667 -5.7150721 -1.3182613 0.0012178
## Ilo-Sevillana       1.2166667 -0.8794306  3.3127640 0.3880384
## Empeltre-Ascolana  -0.9857143 -3.1115449  1.1401164 0.5748123
## Ilo-Ascolana        3.7476190  1.7277692  5.7674689 0.0002396
## Ilo-Empeltre        4.7333333  2.5349279  6.9317387 0.0000378
plot(resultado_tukey, las = 1, col = "blue")

Para complementar el análisis no paramétrico, puede usarse una comparación por pares de Wilcoxon con ajuste de Holm:

pares_wilcoxon <- pairwise.wilcox.test(
  datos_dca$Rendimiento,
  datos_dca$Variedad,
  p.adjust.method = "holm",
  exact = FALSE
)
pares_wilcoxon
## 
##  Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
## 
## data:  datos_dca$Rendimiento and datos_dca$Variedad 
## 
##          Sevillana Ascolana Empeltre
## Ascolana 0.11      -        -       
## Empeltre 0.11      0.28     -       
## Ilo      0.28      0.02     0.04    
## 
## P value adjustment method: holm

Interprete las comparaciones ajustadas, no solo los valores p sin corrección. Las conclusiones por pares deben reportarse a partir de las tablas generadas al compilar el documento.

8 7. Conclusiones

  1. El rendimiento observado varía descriptivamente entre las cuatro variedades; consulte la tabla de estadísticos descriptivos y los gráficos para ver la magnitud y dispersión de esas diferencias.
  2. Las pruebas de supuestos reportadas no detectaron evidencia significativa contra la normalidad de los residuos (\(p=0.2299\)) ni contra la homogeneidad de varianzas (\(p=0.1623\)).
  3. El ANOVA detectó diferencias estadísticamente significativas entre las medias de rendimiento (\(F(3,20)=16.42\), \(p<0.001\)).
  4. Kruskal–Wallis también detectó diferencias globales en los rangos (\(\chi^2(3)=15.23\), \(p=0.00163\)).
  5. Las pruebas globales no determinan qué pares de variedades difieren. Deben revisarse Tukey HSD y, como análisis complementario, las comparaciones de Wilcoxon ajustadas por Holm.
  6. Las conclusiones se limitan a las observaciones y condiciones del experimento. La interpretación causal depende de que el diseño, la aleatorización y la independencia de las observaciones se hayan implementado correctamente.

9 8. Reproducibilidad

Para generar el informe en HTML desde RStudio:

  1. Guarde este archivo con extensión .Rmd.
  2. Instale los paquetes que falten ejecutando install.packages(c("rmarkdown", "ggplot2", "dplyr", "knitr", "car", "broom")).
  3. Abra el archivo en RStudio y pulse Knit para producir el HTML.
  4. Para publicarlo en RPubs, abra el HTML generado y use Publish / Publish to RPubs desde RStudio. Inicie sesión o cree una cuenta de RPubs si se solicita.

El documento requiere conexión a internet solo si necesita instalar paquetes. Los resultados se recalculan a partir de los datos incluidos en este archivo.