Analisis bifactorial

1. Definición del Diseño Experimental

Un diseño bifactorial implica dos factores, cada uno con varios niveles. Por ejemplo, supongamos que queremos estudiar el efecto de dos fertilizantes (Factor A) y dos tipos de riego (Factor B) sobre el crecimiento de plantas.

  • Factor A (Fertilizante):
    • Nivel 1: Fertilizante A
    • Nivel 2: Fertilizante B
  • Factor B (Riego):
    • Nivel 1: Riego bajo
    • Nivel 2: Riego alto

Esto resulta en un diseño \(2 \times 2\), lo que significa que se realizarán cuatro combinaciones diferentes de tratamientos.

2. Creación del Diseño en RStudio

Paso 1: Preparar el entorno

Abre RStudio y asegúrate de tener instalado el paquete necesario para crear diseños factoriales. Puedes usar el paquete FrF2 o doBy. Para instalarlo, ejecuta:

#install.packages("FrF2")

Paso 2: Generar el diseño factorial

Utiliza la función FrF2 para generar el diseño:

library(FrF2)
Cargando paquete requerido: DoE.base
Cargando paquete requerido: grid
Cargando paquete requerido: conf.design
Registered S3 method overwritten by 'DoE.base':
  method           from       
  factorize.factor conf.design

Adjuntando el paquete: 'DoE.base'
The following objects are masked from 'package:stats':

    aov, lm
The following object is masked from 'package:graphics':

    plot.design
The following object is masked from 'package:base':

    lengths
# Crear un diseño factorial completo
design <- FrF2(nruns = 4, nfactors = 2, factor.names = list(Fertilizante = c("A", "B"), Riego = c("Bajo", "Alto")))
creating full factorial with 4 runs ...
print(design)
  Fertilizante Riego
1            A  Alto
2            A  Bajo
3            B  Alto
4            B  Bajo
class=design, type= full factorial 

Paso 3: Recolección de datos

Después de realizar los experimentos, registra los resultados en un dataframe. Supongamos que medimos el crecimiento en centímetros:

# Simulando resultados del experimento
set.seed(123) # Para reproducibilidad
resultados <- c(20, 25, 30, 35) + rnorm(4) # Crecimiento con algo de ruido

# Crear un dataframe
datos <- data.frame(design, Crecimiento = resultados)
print(datos)
  Fertilizante Riego Crecimiento
1            A  Alto    19.43952
2            A  Bajo    24.76982
3            B  Alto    31.55871
4            B  Bajo    35.07051

3. Análisis de Datos

Paso 1: Análisis de Varianza (ANOVA)

Para analizar los efectos de los factores y su interacción sobre el crecimiento, utiliza la función aov():

# Realizar ANOVA
modelo <- aov(Crecimiento ~ Fertilizante * Riego, data = datos)
summary(modelo)
                   Df Sum Sq Mean Sq
Fertilizante        1 125.66  125.66
Riego               1  19.55   19.55
Fertilizante:Riego  1   0.83    0.83

Paso 2: Interpretación de Resultados

El resumen del modelo te proporcionará información sobre:

  • Efectos principales de cada factor.
  • Interacción entre factores.
  • Significancia estadística (valores p).

Si el valor p es menor que 0.05, se puede concluir que hay un efecto significativo.

4. Visualización de Resultados

Para visualizar los efectos, puedes usar gráficos como boxplots o interacciones:

# Boxplot para visualizar efectos
library(ggplot2)

ggplot(datos, aes(x = interaction(Fertilizante, Riego), y = Crecimiento)) +
    geom_boxplot() +
    labs(title = "Efecto del Fertilizante y Riego sobre el Crecimiento",
         x = "Tratamientos",
         y = "Crecimiento (cm)")

Ejemplo 2: Se analiza la tabla de ejemplo.

Se ingresan los factores

FactorA <- gl(n=4, k=8, length=32) 
FactorB<- gl(n=4, k=2,length=32)
Porcentaje <- c(1.8, 2.1, 2.0, 2.1, 4.6, 5.0, 7.5, 7.9, 2.2, 2.4, 4.2, 4.0, 5.4, 5.6, 9.8, 9.2, 2.8, 3.2, 4.4, 4.8, 8.7, 8.4,
13.2, 13.0, 3.2, 3.6, 3.3, 3.5, 5.7, 5.8, 10.9, 11.1) 

Se realiza un dataframe

datos3 <- data.frame(FactorA = FactorA, FactorB = FactorB, Porcentaje=Porcentaje);datos3 
   FactorA FactorB Porcentaje
1        1       1        1.8
2        1       1        2.1
3        1       2        2.0
4        1       2        2.1
5        1       3        4.6
6        1       3        5.0
7        1       4        7.5
8        1       4        7.9
9        2       1        2.2
10       2       1        2.4
11       2       2        4.2
12       2       2        4.0
13       2       3        5.4
14       2       3        5.6
15       2       4        9.8
16       2       4        9.2
17       3       1        2.8
18       3       1        3.2
19       3       2        4.4
20       3       2        4.8
21       3       3        8.7
22       3       3        8.4
23       3       4       13.2
24       3       4       13.0
25       4       1        3.2
26       4       1        3.6
27       4       2        3.3
28       4       2        3.5
29       4       3        5.7
30       4       3        5.8
31       4       4       10.9
32       4       4       11.1
mod3 <- aov(Porcentaje ~ FactorA * FactorB, data = datos3);mod3 
Call:
   aov.default(formula = Porcentaje ~ FactorA * FactorB, data = datos3)

Terms:
                  FactorA   FactorB FactorA:FactorB Residuals
Sum of Squares   41.87625 283.93625        15.85625   0.80000
Deg. of Freedom         3         3               9        16

Residual standard error: 0.2236068
Estimated effects may be unbalanced
summary(mod3)
                Df Sum Sq Mean Sq F value   Pr(>F)    
FactorA          3  41.88   13.96  279.18 5.05e-14 ***
FactorB          3 283.94   94.65 1892.91  < 2e-16 ***
FactorA:FactorB  9  15.86    1.76   35.24 7.09e-09 ***
Residuals       16   0.80    0.05                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Se concluye que existen diferencias entre los efectos de los factores e igualmente en la interaccion de ambos combinados.

ggplot(datos3, aes(x = interaction(FactorA, FactorB), y = Porcentaje)) +
    geom_boxplot() +
    labs(title = "Efecto de cada factor sobre el Porcentaje",
         x = "FactorA",
         y = "FactorB")