1 Introducción

Un experimento factorial en un Diseño Completamente al Azar (DCA) consiste en la combinación de dos o más factores, cada uno con varios niveles, de modo que se evalúan todas las posibles combinaciones de tratamientos. Este tipo de diseño se utiliza cuando las unidades experimentales son homogéneas y no se requiere controlar variabilidad adicional mediante el bloqueo. El análisis factorial en un DCA permite estimar los efectos principales de cada factor y sus interacciones, es decir, examinar si la respuesta de un factor depende de los niveles del otro. Gracias a su simplicidad y eficiencia, el experimento factorial en DCA resulta especialmente útil en situaciones donde las condiciones experimentales se mantienen relativamente uniformes y el interés se centra en comprender la influencia conjunta de los factores en estudio.

2 Experimento factorial con interacción

Abordaremos a continuación la situación que se presenta cuando existe interacción entre dos factores puestos a prueba en un experimento sin estructura de parcela (DCA).

3 El ensayo experimental

La base de datos “cerdos.xlsx” contiene los registros de un experimento que buscaba evaluar el efecto de dos factores en la ganancia de peso de cerdos en engorde durante un periodo de 10 días. El ensayo se llevó a cabo en un Diseño Completamente al Azar seleccionando 36 animales con características homogéneas respecto de la raza y el sexo, mientras que la edad y el peso presentan mínimas diferencias respecto de su variabilidad.

Factores:

  • Factor A: Tipo de Alimento
    • Alimento a base de maíz
    • Alimento a base de sorgo
    • Alimento a base de cebada


  • Factor B: Suplemento
    • Sin suplemento
    • Con suplemento


Objetivo del experimento

Evaluar el efecto del tipo de alimento y de la suplementación, así como su posible interacción, sobre la ganancia de peso de los cerdos.


Preguntas a responder

  • ¿Cual es la mejor combinación de factores que me permite obtener la mayor ganancia de peso en cerdos?

  • ¿El tipo de alimento influye en la ganancia de peso?

  • ¿La suplementación contribuye a mejorar la ganacia de peso?


4 El Modelo Matemático

El modelo matemático para un diseño factorial en un Diseño Completamente al Azar (DCA) es:

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

donde:

  • \(Y_{ijk}\): respuesta observada en la \(k\)-ésima repetición del \(i\)-ésimo nivel del factor Tipo de Alimentación combinado con el \(j\)-ésimo nivel del factor Suplementación.
  • \(\mu\) es la media general.
  • \(\alpha_i\) es el efecto del \(i\)-ésimo nivel del factor Tipo de Alimentación (\(i=1,2,3\)).
  • \(\beta_j\) es el efecto del \(j\)-ésimo nivel del factor Suplementación (\(j=1,2\)).
  • \((\alpha\beta)_{ij}\) es el efecto de interacción entre el nivel \(i\) del Tipo de Alimentación y el nivel \(j\) de Suplementación.
  • \(\varepsilon_{ijk}\) es el término de error aleatorio asociado a la observación \(ijk\).

5 Hipótesis estadísticas

5.1 Interacción Tipo de Alimento × Suplemento (A × B)

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

H1: (⍺𝜷) ≠ 0 (Existe interacción entre los factores)

5.2 Efecto del Tipo de Alimento (A)

H0 ⍺ = 0 (El tipo de alimento no tiene efecto sobre la ganancia de peso de los cerdos)

H1 ⍺ ≠ 0 (Al menos un tipo de alimento produce diferencias en la ganancia de peso)

5.3 Efecto de la Suplementación (B)

H0: 𝜷 = 0 (No hay efecto en la ganancia de peso si suplemento o no suplemento).

H1: 𝜷 ≠ 0 (La ganancia de peso difiere según suplemente o no suplemento).

6 Instalamos y cargamos paquetes

# Instalamos los paquetes que vamos a usar en el análisis estadístico
# install.packages("tidyverse")
# install.packages("readxl")
# install.packages("car")
# install.packages("agricolae")
# install.packages("emmeans")
# install.packages("summarytools")
library(tidyverse)
library(readxl)
library(car)
library(agricolae)
library(emmeans)
library(summarytools)

7 Cargamos la base de datos “cerdos”

CERDOS <- read_excel("cerdos.xlsx")

Responder:

  • ¿Cuál es la unidad experimental?

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

  • ¿Cuál es la variable respuesta?

  • Indique cantidad de tratamientos y repeticiones

8 Transformación de variables

str(CERDOS)
## tibble [36 × 4] (S3: tbl_df/tbl/data.frame)
##  $ ALIMENTO     : chr [1:36] "maiz" "maiz" "maiz" "maiz" ...
##  $ SUPLEMENTO   : chr [1:36] "sin_supl" "sin_supl" "sin_supl" "sin_supl" ...
##  $ TRATAMIENTOS : chr [1:36] "maiz_sin_supl" "maiz_sin_supl" "maiz_sin_supl" "maiz_sin_supl" ...
##  $ GANANCIA_PESO: num [1:36] 750 740 760 745 755 752 820 810 830 815 ...
# Cambiar las variables de tipo "character" a tipo "Factor"
CERDOS <- CERDOS %>% 
  mutate(
    ALIMENTO = factor(ALIMENTO),
    SUPLEMENTO = factor(SUPLEMENTO),
    TRATAMIENTOS = factor(TRATAMIENTOS))
str(CERDOS)
## tibble [36 × 4] (S3: tbl_df/tbl/data.frame)
##  $ ALIMENTO     : Factor w/ 3 levels "cebada","maiz",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ SUPLEMENTO   : Factor w/ 2 levels "con_supl","sin_supl": 2 2 2 2 2 2 1 1 1 1 ...
##  $ TRATAMIENTOS : Factor w/ 6 levels "cebada_con_supl",..: 4 4 4 4 4 4 3 3 3 3 ...
##  $ GANANCIA_PESO: num [1:36] 750 740 760 745 755 752 820 810 830 815 ...

9 Exploración de los datos

CERDOS %>% 
  group_by(TRATAMIENTOS) %>% 
  descr(GANANCIA_PESO)
## Descriptive Statistics  
## GANANCIA_PESO by TRATAMIENTOS  
## Data Frame: CERDOS  
## N: 36  
## 
##                     cebada_con_supl   cebada_sin_supl   maiz_con_supl   maiz_sin_supl
## ----------------- ----------------- ----------------- --------------- ---------------
##              Mean            804.50            714.33          820.33          750.33
##           Std.Dev              7.18              7.17            7.12            7.12
##               Min            795.00            705.00          810.00          740.00
##                Q1            800.00            710.00          815.00          745.00
##            Median            803.50            713.00          821.00          751.00
##                Q3            810.00            720.00          825.00          755.00
##               Max            815.00            725.00          830.00          760.00
##               MAD              7.41              7.41            7.41            7.41
##               IQR              8.25              8.00            8.00            8.00
##                CV              0.01              0.01            0.01            0.01
##          Skewness              0.16              0.22           -0.11           -0.11
##       SE.Skewness              0.85              0.85            0.85            0.85
##          Kurtosis             -1.64             -1.62           -1.61           -1.61
##           N.Valid              6.00              6.00            6.00            6.00
##                 N              6.00              6.00            6.00            6.00
##         Pct.Valid            100.00            100.00          100.00          100.00
## 
## Table: Table continues below
## 
##  
## 
##                     sorgo_con_supl   sorgo_sin_supl
## ----------------- ---------------- ----------------
##              Mean           785.50           694.50
##           Std.Dev             7.18             7.18
##               Min           775.00           685.00
##                Q1           780.00           690.00
##            Median           786.50           693.50
##                Q3           790.00           700.00
##               Max           795.00           705.00
##               MAD             7.41             7.41
##               IQR             8.25             8.25
##                CV             0.01             0.01
##          Skewness            -0.16             0.16
##       SE.Skewness             0.85             0.85
##          Kurtosis            -1.64            -1.64
##           N.Valid             6.00             6.00
##                 N             6.00             6.00
##         Pct.Valid           100.00           100.00

10 ANOVA

modelo_factorial_dca_cerdos <- aov( GANANCIA_PESO ~ ALIMENTO + SUPLEMENTO + ALIMENTO:SUPLEMENTO, data = CERDOS)
summary(modelo_factorial_dca_cerdos)
##                     Df Sum Sq Mean Sq  F value   Pr(>F)    
## ALIMENTO             2  12415    6208  121.202 4.25e-15 ***
## SUPLEMENTO           1  63085   63085 1231.722  < 2e-16 ***
## ALIMENTO:SUPLEMENTO  2    848     424    8.282  0.00137 ** 
## Residuals           30   1536      51                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

La interacción es significativa, lo que significa que el efecto del tipo de Alimento sobre la Ganancia de Peso es diferente según se suplemente o no.

11 Supuestos del modelo

En ANOVA los supuestos se evalúan sobre los residuos del modelo, no sobre las variables originales.

11.1 Normalidad y Homocedasticidad

# Gráfico de diagnóstico
plot(modelo_factorial_dca_cerdos, which = 1) 

plot(modelo_factorial_dca_cerdos, which = 2) 

# Prueba de normalidad de Shapiro-Wilk
shapiro.test(modelo_factorial_dca_cerdos$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_factorial_dca_cerdos$residuals
## W = 0.94528, p-value = 0.07428
#Test de Levene (car)
leveneTest(GANANCIA_PESO ~ ALIMENTO * SUPLEMENTO, data = CERDOS)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  5  0.0029      1
##       30

11.2 Visualización de la interacción

# Generar gráfico de interacción con paquete emmeans::emmip

emmip(modelo_factorial_dca_cerdos, ALIMENTO ~ SUPLEMENTO) # Alimento eje "y" y Suplemento eje "x"

# modificamos la función para cambiar el orden en el eje x
levels(CERDOS$SUPLEMENTO)
## [1] "con_supl" "sin_supl"
emmip(modelo_factorial_dca_cerdos, ALIMENTO ~ SUPLEMENTO, 
      at = list(SUPLEMENTO = c("sin_supl", "con_supl"))) # indica el orden 

12 Comparaciones múltiples

12.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.
Tukey_interacc_cerdos <- HSD.test(modelo_factorial_dca_cerdos, c("ALIMENTO","SUPLEMENTO"))
Tukey_interacc_cerdos
## $statistics
##    MSerror Df     Mean        CV      MSD
##   51.21667 30 761.5833 0.9396978 12.56743
## 
## $parameters
##    test              name.t ntr StudentizedRange alpha
##   Tukey ALIMENTO:SUPLEMENTO   6         4.301464  0.05
## 
## $means
##                 GANANCIA_PESO      std r       se Min Max    Q25   Q50    Q75
## cebada:con_supl      804.5000 7.176350 6 2.921662 795 815 800.50 803.5 808.75
## cebada:sin_supl      714.3333 7.174027 6 2.921662 705 725 710.50 713.0 718.50
## maiz:con_supl        820.3333 7.118052 6 2.921662 810 830 816.25 821.0 824.25
## maiz:sin_supl        750.3333 7.118052 6 2.921662 740 760 746.25 751.0 754.25
## sorgo:con_supl       785.5000 7.176350 6 2.921662 775 795 781.25 786.5 789.50
## sorgo:sin_supl       694.5000 7.176350 6 2.921662 685 705 690.50 693.5 698.75
## 
## $comparison
## NULL
## 
## $groups
##                 GANANCIA_PESO groups
## maiz:con_supl        820.3333      a
## cebada:con_supl      804.5000      b
## sorgo:con_supl       785.5000      c
## maiz:sin_supl        750.3333      d
## cebada:sin_supl      714.3333      e
## sorgo:sin_supl       694.5000      f
## 
## attr(,"class")
## [1] "group"

12.2 Visualización de medias de tratamientos

ggplot(CERDOS, aes(x = SUPLEMENTO, y = GANANCIA_PESO, fill = ALIMENTO)) +
  stat_summary(fun = mean,                 # calcula la media para cada tratamiento
               geom = "bar",               # usa barras para mostrar la media de cada tratamiento
               position = position_dodge(width = 0.9)) + # evita que se superpongan las barras
  labs(x = "Suplementación",
       y = "Ganancia de Peso (g)") +
  scale_x_discrete(limits = c("sin_supl", "con_supl")) + # orden del eje x
  scale_y_continuous(limits = c(0, 1000)) +               # modificamos la escala eje "y" 
  theme_minimal()