1 Descripción del caso

Un semillero evalúa el efecto de 4 bioinsumos (B1 = testigo sin aplicar, B2, B3, B4) sobre el rendimiento de fríjol (kg/parcela). Como el lote presenta un gradiente de humedad, se usaron 4 bloques. Diseño: bloques completos al azar (DBCA) con 16 parcelas.

Modelo: \(Y_{ij} = \mu + \tau_i + \beta_j + \varepsilon_{ij}\), donde \(\tau_i\) es el efecto del bioinsumo i y \(\beta_j\) el efecto del bloque j.

Hipótesis para bioinsumos: \(H_0: \tau_1 = \tau_2 = \tau_3 = \tau_4 = 0\) vs. \(H_1:\) al menos un \(\tau_i \neq 0\).

2 Carga de datos y conversión a factores

datos <- read.csv("Datos_frijol_bioinsumos.csv", sep = ";", header = TRUE)
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 ...
datos$Bioinsumo <- as.factor(datos$Bioinsumo)
datos$Bloque    <- as.factor(datos$Bloque)
str(datos)
## 'data.frame':    16 obs. of  4 variables:
##  $ Tratamiento: chr  "T1" "T1" "T1" "T1" ...
##  $ Bioinsumo  : Factor w/ 4 levels "B1","B2","B3",..: 1 1 1 1 2 2 2 2 3 3 ...
##  $ Bloque     : Factor w/ 4 levels "1","2","3","4": 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 ...
kable(datos, caption = "Datos del ensayo")
Datos del ensayo
Tratamiento Bioinsumo Bloque Rendimiento
T1 B1 1 2.2
T1 B1 2 1.7
T1 B1 3 2.5
T1 B1 4 1.9
T2 B2 1 2.4
T2 B2 2 2.6
T2 B2 3 3.0
T2 B2 4 2.3
T3 B3 1 3.1
T3 B3 2 2.5
T3 B3 3 3.0
T3 B3 4 2.9
T4 B4 1 3.0
T4 B4 2 3.1
T4 B4 3 3.6
T4 B4 4 3.0

Bloque venía como entero (int); se convierte a factor para que R lo trate como factor de bloqueo y no como covariable continua.

3 Análisis exploratorio

3.1 Tabla de medias

tabla_medias <- datos %>%
  group_by(Bioinsumo) %>%
  summarise(n = n(),
            Media = mean(Rendimiento),
            DE = sd(Rendimiento),
            Min = min(Rendimiento),
            Max = max(Rendimiento))
kable(tabla_medias, digits = 3, caption = "Rendimiento (kg/parcela) por bioinsumo")
Rendimiento (kg/parcela) por bioinsumo
Bioinsumo n Media DE Min Max
B1 4 2.075 0.350 1.7 2.5
B2 4 2.575 0.310 2.3 3.0
B3 4 2.875 0.263 2.5 3.1
B4 4 3.175 0.287 3.0 3.6
kable(datos %>% group_by(Bloque) %>% summarise(Media = mean(Rendimiento)),
      digits = 3, caption = "Rendimiento medio por bloque")
Rendimiento medio por bloque
Bloque Media
1 2.675
2 2.475
3 3.025
4 2.525

3.2 Boxplot del rendimiento por bioinsumo

ggplot(datos, aes(x = Bioinsumo, y = Rendimiento, fill = Bioinsumo)) +
  geom_boxplot(alpha = 0.7) +
  geom_jitter(width = 0.08, size = 2) +
  stat_summary(fun = mean, geom = "point", shape = 18, size = 4, color = "red") +
  labs(title = "Rendimiento de fríjol por bioinsumo",
       x = "Bioinsumo", y = "Rendimiento (kg/parcela)") +
  theme_minimal() + theme(legend.position = "none")

ggplot(datos, aes(x = Bloque, y = Rendimiento, group = Bioinsumo, color = Bioinsumo)) +
  geom_line() + geom_point(size = 2) +
  labs(title = "Rendimiento por bloque y bioinsumo", y = "Rendimiento (kg/parcela)") +
  theme_minimal()

Se observa una tendencia creciente B1 < B2 < B3 < B4, con el testigo (B1) como el de menor rendimiento. El bloque 3 presenta los rendimientos más altos en casi todos los tratamientos, lo que sugiere un efecto del gradiente de humedad.

4 Modelo DBCA y tabla ANOVA

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
cv.model(modelo)   # coeficiente de variación (%)
## [1] 7.579766

Lectura de la tabla ANOVA (α = 0.05):

  • Bioinsumo: F = 21.41, p ≈ 0.0002 < 0.05 → se rechaza \(H_0\): al menos un bioinsumo produce un rendimiento medio diferente.
  • Bloque: F = 6.00, p ≈ 0.016 < 0.05 → existen diferencias entre bloques; el gradiente de humedad sí afectó el rendimiento.
  • Grados de libertad: bioinsumos 3, bloques 3, error 9 (total 15). CME = 0.0411.
  • CV ≈ 7.6 %, lo que indica buena precisión experimental.

5 Verificación de supuestos

residuos <- residuals(modelo)

# Normalidad
shapiro.test(residuos)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.89968, p-value = 0.07942
# Homogeneidad de varianzas
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
leveneTest(Rendimiento ~ Bioinsumo, data = datos)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3   0.234 0.8709
##       12
par(mfrow = c(1, 2))
qqnorm(residuos, main = "Q-Q de residuales"); qqline(residuos, col = "red")
plot(fitted(modelo), residuos, xlab = "Valores ajustados", ylab = "Residuales",
     main = "Residuales vs ajustados"); abline(h = 0, col = "red", lty = 2)

par(mfrow = c(1, 1))

Interpretación:

  • Normalidad (Shapiro-Wilk): W = 0.90, p ≈ 0.079 > 0.05 → no se rechaza la normalidad de los residuales.
  • Homogeneidad (Bartlett): p ≈ 0.97 > 0.05; Levene: p ≈ 0.87 > 0.05 → las varianzas entre bioinsumos son homogéneas.
  • Los gráficos no muestran patrones ni valores atípicos marcados. Los supuestos se cumplen razonablemente y el ANOVA es confiable.

6 Comparación de medias (Tukey)

tukey <- 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
kable(tukey$groups, digits = 3, caption = "Agrupación de medias por Tukey (α = 0.05)")
Agrupación de medias por Tukey (α = 0.05)
Rendimiento groups
B4 3.175 a
B3 2.875 ab
B2 2.575 b
B1 2.075 c
grupos <- data.frame(Bioinsumo = rownames(tukey$groups),
                     Media = tukey$groups$Rendimiento,
                     Letra = tukey$groups$groups)
grupos <- merge(grupos, tukey$means[, c("Rendimiento", "std")],
                by.x = "Media", by.y = "Rendimiento")

ggplot(grupos, aes(x = reorder(Bioinsumo, -Media), y = Media, fill = Bioinsumo)) +
  geom_col(alpha = 0.8, width = 0.6) +
  geom_errorbar(aes(ymin = Media - std, ymax = Media + std), width = 0.15) +
  geom_text(aes(label = Letra, y = Media + std + 0.12), size = 6, fontface = "bold") +
  labs(title = "Rendimiento medio por bioinsumo - Tukey (α = 0.05)",
       x = "Bioinsumo", y = "Rendimiento medio (kg/parcela)",
       caption = "Medias con la misma letra no difieren significativamente") +
  theme_minimal() + theme(legend.position = "none")

# Gráfico base de agricolae
bar.group(tukey$groups, ylim = c(0, 4), col = "lightgreen",
          main = "Tukey: rendimiento por bioinsumo", ylab = "kg/parcela")

Resultado (DMS de Tukey ≈ 0.45 kg/parcela):

Bioinsumo Media (kg/parcela) Grupo
B4 3.175 a
B3 2.875 ab
B2 2.575 b
B1 (testigo) 2.075 c

B4 y B3 no difieren entre sí; B3 y B2 tampoco. B4 supera significativamente a B2 y a B1, y todos los bioinsumos superan al testigo B1.

7 Conclusión agronómica

  1. Los bioinsumos sí afectan el rendimiento del fríjol (p ≈ 0.0002). Todos los bioinsumos aplicados (B2, B3 y B4) superan significativamente al testigo sin aplicación (B1, grupo «c»).
  2. Recomendación: se recomienda B4, que obtuvo el mayor rendimiento medio (3.175 kg/parcela, grupo «a»), un incremento de ≈ 53 % frente al testigo (2.075 kg/parcela) y significativamente superior a B2. B3 (2.875 kg/parcela, grupo «ab») es una alternativa válida, estadísticamente igual a B4; la elección entre ambos puede definirse por costo y disponibilidad. B2 mejora frente al testigo, pero es inferior a B4.
  3. ¿El bloqueo fue útil? Sí. El efecto de bloque fue significativo (p ≈ 0.016): el gradiente de humedad generó diferencias reales entre bloques (el bloque 3 tuvo el mayor rendimiento medio, 3.03 kg/parcela). Al separar esa variación (SC = 0.74) del error, el cuadrado medio del error bajó y la prueba de bioinsumos ganó precisión. Sin bloqueo, esa variación habría inflado el error experimental.
  4. Los supuestos de normalidad y homogeneidad de varianzas se cumplieron, y el CV (≈ 7.6 %) indica un ensayo bien conducido, por lo que las conclusiones son confiables.