# Crear el dataframe con las observaciones
longitudes <- c(
  5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8,  # Setosa
  7.0, 6.4, 6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5.0, 5.9, 6.0, 6.1, 5.6,  # Versicolor
  6.3, 5.8, 7.1, 6.3, 6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8   # Virginica
)

especie <- factor(rep(c("Setosa", "Versicolor", "Virginica"), each = 15))

datos <- data.frame(
  Especie = especie,
  Longitud = longitudes
)

# ANOVA completamente al azar
modelo <- aov(Longitud ~ Especie, data = datos)
summary(modelo)
##             Df Sum Sq Mean Sq F value  Pr(>F)    
## Especie      2  18.76   9.382   25.71 5.1e-08 ***
## Residuals   42  15.32   0.365                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Solo necesitas instalarlo una vez
install.packages("agricolae")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
# Cargar el paquete
library(agricolae)
# Prueba LSD para comparar medias
prueba_lsd <- LSD.test(modelo, "Especie", p.adj = "none")

# Mostrar los grupos formados
print(prueba_lsd$groups)
##            Longitud groups
## Virginica  6.460000      a
## Versicolor 5.973333      b
## Setosa     4.913333      c
# Prueba de Duncan para comparación múltiple
prueba_duncan <- duncan.test(modelo, "Especie", group = TRUE)

# Ver grupos formados
print(prueba_duncan$groups)
##            Longitud groups
## Virginica  6.460000      a
## Versicolor 5.973333      b
## Setosa     4.913333      c
# Gráfico de barras con los grupos formados por la prueba de Duncan
bar.group(prueba_duncan$groups,
          ylim = c(0, 7),
          col = c("skyblue", "lightgreen", "Red"),
          main = "Promedio de longitud por especie (Duncan)",
          xlab = "Especie",
          ylab = "Longitud promedio (cm)")