Se evaluó el efecto de cuatro bioinsumos sobre el rendimiento del cultivo de fríjol (Phaseolus vulgaris), utilizando un diseño de bloques completos al azar (DBCA) con cuatro bloques. El objetivo es identificar diferencias entre bioinsumos y determinar cuál presenta el mayor rendimiento promedio.
Guarde Datos_frijol_bioinsumos.csv en la misma carpeta
que este archivo R Markdown. El archivo está separado por punto y
coma.
datos <- read.csv("Datos_frijol_bioinsumos.csv", header = TRUE, sep = ";", dec = ".")
str(datos)
## 'data.frame': 16 obs. of 4 variables:
## $ Tratamiento: chr "T1" "T1" "T1" "T1" ...
## $ Bioinsumo : chr "B1" "B1" "B1" "B1" ...
## $ Bloque : int 1 2 3 4 1 2 3 4 1 2 ...
## $ Rendimiento: num 2.2 1.7 2.5 1.9 2.4 2.6 3 2.3 3.1 2.5 ...
head(datos)
## Tratamiento Bioinsumo Bloque Rendimiento
## 1 T1 B1 1 2.2
## 2 T1 B1 2 1.7
## 3 T1 B1 3 2.5
## 4 T1 B1 4 1.9
## 5 T2 B2 1 2.4
## 6 T2 B2 2 2.6
datos$Bioinsumo <- as.factor(datos$Bioinsumo)
datos$Bloque <- as.factor(datos$Bloque)
# Comprobar que se cuenta con las 16 observaciones esperadas
nrow(datos)
## [1] 16
table(datos$Bioinsumo, datos$Bloque)
##
## 1 2 3 4
## B1 1 1 1 1
## B2 1 1 1 1
## B3 1 1 1 1
## B4 1 1 1 1
El conjunto contiene 16 observaciones, correspondientes a cuatro
bioinsumos evaluados en cuatro bloques. La variable respuesta es
Rendimiento, expresada en kg/parcela.
boxplot(Rendimiento ~ Bioinsumo, data = datos,
xlab = "Bioinsumo",
ylab = "Rendimiento (kg/parcela)",
main = "Rendimiento por bioinsumo",
col = "lightgreen")
El diagrama de cajas permite comparar la distribución y la variabilidad del rendimiento observado para cada bioinsumo.
medias <- aggregate(Rendimiento ~ Bioinsumo, data = datos, FUN = mean)
names(medias)[2] <- "Media_kg_parcela"
medias <- medias[order(-medias$Media_kg_parcela), ]
medias
## Bioinsumo Media_kg_parcela
## 4 B4 3.175
## 3 B3 2.875
## 2 B2 2.575
## 1 B1 2.075
Se ajusta un modelo de bloques completos al azar, considerando el bioinsumo y el bloque como factores:
modelo <- aov(Rendimiento ~ Bloque + Bioinsumo, data = datos)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## Bloque 3 0.74 0.2467 6.00 0.015716 *
## Bioinsumo 3 2.64 0.8800 21.41 0.000196 ***
## Residuals 9 0.37 0.0411
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
La hipótesis nula para bioinsumo establece que los cuatro rendimientos medios son iguales. Si el valor p es menor que 0,05, se rechaza la hipótesis nula y se concluye que existe evidencia de diferencias entre al menos dos bioinsumos.
shapiro.test(residuals(modelo))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo)
## W = 0.89968, p-value = 0.07942
Si el valor p es mayor que 0,05, no se rechaza la hipótesis de normalidad de los residuales.
bartlett.test(Rendimiento ~ Bioinsumo, data = datos)
##
## Bartlett test of homogeneity of variances
##
## data: Rendimiento by Bioinsumo
## Bartlett's K-squared = 0.2339, df = 3, p-value = 0.9719
Si el valor p es mayor que 0,05, no se rechaza la hipótesis de igualdad de varianzas entre los grupos.
par(mfrow = c(2, 2))
plot(modelo)
par(mfrow = c(1, 1))
Los gráficos permiten revisar patrones en los residuales, posibles valores atípicos y la adecuación general del modelo.
Se utiliza la prueba de Tukey con un nivel de significancia del 5 %.
El paquete agricolae presenta las agrupaciones por
letras.
if (!requireNamespace("agricolae", quietly = TRUE)) {
install.packages("agricolae", repos = "https://cloud.r-project.org")
}
library(agricolae)
comparacion <- HSD.test(modelo, "Bioinsumo", group = TRUE, console = TRUE)
##
## Study: modelo ~ "Bioinsumo"
##
## HSD Test for Rendimiento
##
## Mean Square Error: 0.04111111
##
## Bioinsumo, means
##
## Rendimiento std r se Min Max Q25 Q50 Q75
## B1 2.075 0.3500000 4 0.1013794 1.7 2.5 1.850 2.05 2.275
## B2 2.575 0.3095696 4 0.1013794 2.3 3.0 2.375 2.50 2.700
## B3 2.875 0.2629956 4 0.1013794 2.5 3.1 2.800 2.95 3.025
## B4 3.175 0.2872281 4 0.1013794 3.0 3.6 3.000 3.05 3.225
##
## Alpha: 0.05 ; DF Error: 9
## Critical Value of Studentized Range: 4.41489
##
## Minimun Significant Difference: 0.4475788
##
## Treatments with the same letter are not significantly different.
##
## Rendimiento groups
## B4 3.175 a
## B3 2.875 ab
## B2 2.575 b
## B1 2.075 c
comparacion$groups
## Rendimiento groups
## B4 3.175 a
## B3 2.875 ab
## B2 2.575 b
## B1 2.075 c
Las medias que comparten una letra no presentan diferencias estadísticamente significativas según Tukey al 5 %.
grupos <- comparacion$groups
grupos$Bioinsumo <- rownames(grupos)
rownames(grupos) <- NULL
# Ordenar las barras por el nombre del bioinsumo
grupos <- grupos[match(levels(datos$Bioinsumo), grupos$Bioinsumo), ]
bp <- barplot(grupos$Rendimiento,
names.arg = grupos$Bioinsumo,
xlab = "Bioinsumo",
ylab = "Rendimiento medio (kg/parcela)",
main = "Comparación de medias por Tukey",
ylim = c(0, max(grupos$Rendimiento) * 1.2),
col = "lightgreen")
text(bp, grupos$Rendimiento + max(grupos$Rendimiento) * 0.05,
labels = grupos$groups, cex = 1.1)
tabla_medias <- aggregate(Rendimiento ~ Bioinsumo, data = datos, FUN = mean)
mejor <- tabla_medias[which.max(tabla_medias$Rendimiento), ]
anova_tabla <- summary(modelo)[[1]]
p_bio <- anova_tabla["Bioinsumo", "Pr(>F)"]
p_bloque <- anova_tabla["Bloque", "Pr(>F)"]
cat(sprintf("El mayor rendimiento promedio observado corresponde a %s, con %.3f kg/parcela. ",
as.character(mejor$Bioinsumo), mejor$Rendimiento))
El mayor rendimiento promedio observado corresponde a B4, con 3.175 kg/parcela.
if (p_bio < 0.05) {
cat(sprintf("El ANOVA detectó diferencias estadísticamente significativas entre bioinsumos (p = %.4f). La recomendación debe considerar la agrupación de Tukey: se prefiere el bioinsumo con mayor media siempre que su rendimiento sea estadísticamente distinguible y la decisión sea agronómica y económicamente viable.\\n\\n", p_bio))
} else {
cat(sprintf("El ANOVA no detectó diferencias estadísticamente significativas entre bioinsumos (p = %.4f). Por tanto, no se puede afirmar que el de mayor media sea superior estadísticamente.\\n\\n", p_bio))
}
El ANOVA detectó diferencias estadísticamente significativas entre bioinsumos (p = 0.0002). La recomendación debe considerar la agrupación de Tukey: se prefiere el bioinsumo con mayor media siempre que su rendimiento sea estadísticamente distinguible y la decisión sea agronómica y económicamente viable.
if (p_bloque < 0.05) {
cat(sprintf("El efecto de bloque fue significativo (p = %.4f), lo que indica que hubo variación entre bloques. Por ello, el bloqueo resultó útil para controlar parte de la variabilidad del lote.\\n", p_bloque))
} else {
cat(sprintf("El efecto de bloque no fue significativo (p = %.4f); en este ensayo no se detectaron diferencias estadísticamente significativas entre bloques.\\n", p_bloque))
}
El efecto de bloque fue significativo (p = 0.0157), lo que indica que hubo variación entre bloques. Por ello, el bloqueo resultó útil para controlar parte de la variabilidad del lote.
La recomendación final también debe considerar el costo de cada bioinsumo, su disponibilidad, facilidad de aplicación y posibles efectos sobre el suelo y el cultivo. Estos aspectos no se miden directamente en este ensayo.
agricolae: procedimientos para análisis de
experimentos agrícolas.