knitr::opts_chunk$set(echo = TRUE,
                      message = FALSE,
                      warning = FALSE,
                      fig.align = "center")

1 Introducción

Un experimento factorial en Bloques Completos al Azar (DBCA) constituye un diseño estadístico que combina dos o más factores, cada uno con distintos niveles, de manera que se evalúan todas las posibles combinaciones entre ellos dentro de cada bloque. Este tipo de diseño es ampliamente utilizado porque permite, por un lado, cuantificar los efectos principales de cada factor y, por otro, identificar interacciones, es decir, situaciones en las que la respuesta de un factor depende del nivel del otro. La inclusión de bloques tiene como finalidad controlar la variabilidad no explicada proveniente de condiciones ambientales o de manejo, incrementando así la precisión de las comparaciones. De esta manera, el experimento factorial en DBCA resulta una herramienta metodológica robusta para estudiar fenómenos complejos en los que intervienen simultáneamente múltiples factores.

1.1 El ensayo experimental

La base de datos olivos.xlsx contiene los resultados de un experimento en el cual se sometió a prueba el efecto del riego y de la fertilización potásica sobre el crecimiento de plantas de olivo cultivados en macetas. Se ensayaron dos frecuencias de riego (Bajo: cada 5 días; Alto: cada 2 días) y dos dosis de fertilizante potásico (K Bajo y K Alto).

El ensayo se llevó a cabo en macetas, cada una con una planta, y se dispusieron 6 macetas por cada combinación experimental. Para controlar posibles fuentes de variación no atribuibles a los factores en estudio, se aplicó un diseño en bloques completos al azar (DBCA). En este caso, los bloques se definieron según la ubicación de las macetas en el invernadero, ya que se conoce la existencia de un gradiente de luz (medido con luxómetro) a lo largo del espacio. De esta forma, cada bloque representó una fila del invernadero, y dentro de cada bloque se distribuyeron aleatoriamente todos los tratamientos. Los datos registrados corresponden al peso total de los brotes (gramos de materia seca) que crecieron durante el período experimental.


Objetivo del experimento

Evaluar el efecto del riego y de la fertilización potásica, así como su posible interacción, sobre el crecimiento de plantones de olivo cultivados en macetas.


Preguntas a responder

  • ¿La respuesta de las plantas al potasio depende del nivel de riego aplicado, es decir, existe interacción entre el riego y la fertilización potásica?

  • ¿El nivel de riego influye significativamente en la variable respuesta?

  • ¿La dosis de fertilizante potásico produce diferencias significativas en el crecimiento de los brotes de olivo?


1.2 El Modelo Matemático

El modelo factorial en un Diseño en Bloques Completos al Azar (DBCA) es:

\[Y_{ijk} = \mu + \alpha_i + \beta_j + (\alpha\beta)_{ij} + b_k + \varepsilon_{ijk}\]

donde:

  • \(\mu\) es la media general.
  • \(\alpha_i\) es el efecto del \(i\)-ésimo nivel del factor Riego (\(i=1,2\)).
  • \(\beta_j\) es el efecto del \(j\)-ésimo nivel del factor Potasio (\(j=1,2\)).
  • \((\alpha\beta)_{ij}\) es el efecto de interacción entre el nivel \(i\) de Riego y el nivel \(j\) de Potasio.
  • \(b_k\) es el efecto del \(k\)-ésimo bloque (fila del invernadero), \(k=1,\dots,6\).
  • \(\varepsilon_{ijk}\) es el término de error aleatorio asociado a la observación \(ijk\).

2 Hipótesis estadísticas

2.1 Interacción Riego × Potasio (A × B)

H0: (⍺𝜷) = 0 (No hay interacción: el efecto de un factor es independiente del otro)

H1: (⍺𝜷) ≠ 0 (Existe interacción entre riego y potasio)

2.2 Efecto del factor Riego (A)

H0 ⍺ = 0 (El nivel de riego no tiene efecto sobre el peso seco de brotes)

H1 ⍺ ≠ 0 (Al menos un nivel de riego produce diferencias en el crecimiento)

2.2.1 Efecto del factor Potasio (B)

H0: 𝜷 = 0 (La dosis de potasio no afecta el peso seco de los brotes).

H1: 𝜷 ≠ 0 (Al menos una dosis de potasio produce diferencias en el peso seco de los brotes).

3 Instalamos y cargamos paquetes

# install.packages("tidyverse")
# install.packages("readxl")
# install.packages("skimr")
# install.packages("car")
# install.packages("agricolae")
# install.packages("emmeans")
# install.packages("summarytools")
library(tidyverse)
library(readxl)
library(skimr)
library(summarytools)
library(car)
library(agricolae)
library(emmeans)

4 La base de datos olivos

OLIVOS <- read_excel("olivos.xlsx")

Responder:

  • ¿Cuál es la unidad experimental?

  • ¿Cuáles son los factores y sus niveles?

  • ¿Cuál es la variable respuesta?

  • ¿Cuántas repeticiones tiene cada tratamiento?

5 Transformación de variables

str(OLIVOS)
## tibble [24 × 5] (S3: tbl_df/tbl/data.frame)
##  $ BLOQUE      : chr [1:24] "I" "I" "I" "I" ...
##  $ RIEGO       : chr [1:24] "RiegoBajo" "RiegoBajo" "RiegoAlto" "RiegoAlto" ...
##  $ POTASIO     : chr [1:24] "KBajo" "KAlto" "KBajo" "KAlto" ...
##  $ TRATAMIENTOS: chr [1:24] "RiegoBajo_KBajo" "RiegoBajo_KAlto" "RiegoAlto _KBajo" "RiegoAlto _KAlto" ...
##  $ PESO_BROTES : num [1:24] 11 14 17 21 13 13 19 19 12 10 ...
# Cambiar las variables a factores
OLIVOS <- OLIVOS %>% 
  mutate(
    RIEGO = factor(RIEGO),
    POTASIO = factor(POTASIO))

6 Exploración de los datos

6.1 Medidas de resumen

OLIVOS %>% 
  group_by(RIEGO, POTASIO) %>% 
  descr(PESO_BROTES)
## Descriptive Statistics  
## OLIVOS$PESO_BROTES  
## Group: RIEGO = RiegoAlto, POTASIO = KAlto  
## N: 6  
## 
##                     PESO_BROTES
## ----------------- -------------
##              Mean         21.00
##           Std.Dev          1.41
##               Min         19.00
##                Q1         20.00
##            Median         21.00
##                Q3         22.00
##               Max         23.00
##               MAD          1.48
##               IQR          1.50
##                CV          0.07
##          Skewness          0.00
##       SE.Skewness          0.85
##          Kurtosis         -1.58
##           N.Valid          6.00
##                 N          6.00
##         Pct.Valid        100.00
## 
## Group: RIEGO = RiegoAlto, POTASIO = KBajo  
## N: 6  
## 
##                     PESO_BROTES
## ----------------- -------------
##              Mean         17.83
##           Std.Dev          1.47
##               Min         16.00
##                Q1         17.00
##            Median         17.50
##                Q3         19.00
##               Max         20.00
##               MAD          1.48
##               IQR          1.75
##                CV          0.08
##          Skewness          0.23
##       SE.Skewness          0.85
##          Kurtosis         -1.72
##           N.Valid          6.00
##                 N          6.00
##         Pct.Valid        100.00
## 
## Group: RIEGO = RiegoBajo, POTASIO = KAlto  
## N: 6  
## 
##                     PESO_BROTES
## ----------------- -------------
##              Mean         12.83
##           Std.Dev          1.94
##               Min         10.00
##                Q1         11.00
##            Median         13.50
##                Q3         14.00
##               Max         15.00
##               MAD          1.48
##               IQR          2.50
##                CV          0.15
##          Skewness         -0.35
##       SE.Skewness          0.85
##          Kurtosis         -1.81
##           N.Valid          6.00
##                 N          6.00
##         Pct.Valid        100.00
## 
## Group: RIEGO = RiegoBajo, POTASIO = KBajo  
## N: 6  
## 
##                     PESO_BROTES
## ----------------- -------------
##              Mean         13.00
##           Std.Dev          1.41
##               Min         11.00
##                Q1         12.00
##            Median         13.00
##                Q3         14.00
##               Max         15.00
##               MAD          1.48
##               IQR          1.50
##                CV          0.11
##          Skewness          0.00
##       SE.Skewness          0.85
##          Kurtosis         -1.58
##           N.Valid          6.00
##                 N          6.00
##         Pct.Valid        100.00

6.2 Visualización

ggplot(OLIVOS, aes(x = RIEGO, y = PESO_BROTES, fill = POTASIO)) +
  geom_boxplot() +
  labs(x = "FRECUENCIA DE RIEGO", 
       y = "PESO DE BROTES (g)") +
  theme_minimal()

7 ANOVA Factorial en DBCA

modelo_factorial_dbca <- aov(PESO_BROTES ~ RIEGO + POTASIO + RIEGO:POTASIO + BLOQUE, data = OLIVOS)
summary(modelo_factorial_dbca)
##               Df Sum Sq Mean Sq F value  Pr(>F)    
## RIEGO          1 253.50  253.50 109.163 2.8e-08 ***
## POTASIO        1  13.50   13.50   5.813  0.0292 *  
## BLOQUE         5  14.83    2.97   1.278  0.3242    
## RIEGO:POTASIO  1  16.67   16.67   7.177  0.0172 *  
## Residuals     15  34.83    2.32                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

La interacción significativa entre los factores Riego y Potasio indica que el efecto de la dosis de RIEGO sobre el PESO_BROTES depende del nivel de potasio aplicado.

8 Supuestos del modelo

8.1 Normalidad y Homocedasticidad

# Gráfico de diagnóstico
plot(modelo_factorial_dbca, which = 1:2) 

# Prueba de normalidad de Shapiro-Wilk
shapiro.test(modelo_factorial_dbca$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_factorial_dbca$residuals
## W = 0.98716, p-value = 0.9847
#Test de Levene (car)
leveneTest(PESO_BROTES ~ RIEGO * POTASIO, data = OLIVOS)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3  0.3448 0.7932
##       20

8.2 Visualización de interacción

interaction.plot(x.factor = OLIVOS$RIEGO,
                 trace.factor = OLIVOS$POTASIO,
                 response = OLIVOS$PESO_BROTES,
                 fun = mean,         # por defecto calcula la media
                 type = "b",         # puntos y líneas
                 col = c("black","grey70"),  # colores para cada nivel de POTASIO
                 pch = c(16, 15), # símbolos
                 xlab = "Riego",
                 ylab = "Peso de brotes (g)",
                 trace.label = "Potasio") # modifica nombre leyenda

9 Comparaciones múltiples

9.1 Test de Tukey (HSD)

#Le indicamos a R que tome el modelo ANOVA creado y le aplique un Test de Tukey a la interacción entre los factores: RIEGO y POTASIO.
Tukey_Interaccion_DBCA <- HSD.test(modelo_factorial_dbca, c("RIEGO","POTASIO"))
Tukey_Interaccion_DBCA
## $statistics
##    MSerror Df     Mean       CV      MSD
##   2.322222 15 16.16667 9.426086 2.535757
## 
## $parameters
##    test        name.t ntr StudentizedRange alpha
##   Tukey RIEGO:POTASIO   4         4.075974  0.05
## 
## $means
##                 PESO_BROTES      std r       se Min Max   Q25  Q50   Q75
## RiegoAlto:KAlto    21.00000 1.414214 6 0.622123  19  23 20.25 21.0 21.75
## RiegoAlto:KBajo    17.83333 1.471960 6 0.622123  16  20 17.00 17.5 18.75
## RiegoBajo:KAlto    12.83333 1.940790 6 0.622123  10  15 11.50 13.5 14.00
## RiegoBajo:KBajo    13.00000 1.414214 6 0.622123  11  15 12.25 13.0 13.75
## 
## $comparison
## NULL
## 
## $groups
##                 PESO_BROTES groups
## RiegoAlto:KAlto    21.00000      a
## RiegoAlto:KBajo    17.83333      b
## RiegoBajo:KBajo    13.00000      c
## RiegoBajo:KAlto    12.83333      c
## 
## attr(,"class")
## [1] "group"

9.2 Visualización de medias de tratamientos

ggplot(OLIVOS, aes(x = RIEGO, y = PESO_BROTES, fill = POTASIO)) +
  stat_summary(fun = mean,  
               geom = "bar", 
               position = position_dodge(width = 0.9)) +
  labs(x = "Frecuencia de Riego",
       y = "Peso de brotes (g)",
       title = "Peso de brotes según frecuencia de riego y dosis de potasio") + 
  theme_minimal() +
  scale_x_discrete(limits = c("RiegoBajo", "RiegoAlto")) + # indica el orden en eje "x"
  scale_fill_manual(values = c("grey25", "grey70"))   # color de barras en gris

¿Qué hace stat_summary?
stat_summary() calcula alguna medida estadística (media, mediana, error estándar, etc.) para cada combinación de factores y lo muestra con la geometría (geom) que se le indica.

10 Bibliografía

  • Di Rienzo, J. A.; Casanoves, F; Gonzalez, L. A.; Tablada, E. M.; Díaz, M.; Robledo, C. W.; Balzarini, M. G. Estadística para las Ciencias Agropecuarias. Editorial Brujas.

  • Fernández Escobar, R.; Trapero, A.; Dominguez, J. Experimentación en Agricultura. Junta de Andalucía: Consejo de Agricultura y Pesca.