##Diseños en bloque aleatorizados - DBCA

##Datos

library(readxl)
datos <- read_excel("C:/Users/emper/Downloads/Diseños de experimentos/Proyecto/Base de datos-proyecto 2.xlsx")
View(datos)

datos
## # A tibble: 20 × 4
##    Bloque Tratamiento Metodo          Peso
##    <chr>  <chr>       <chr>          <dbl>
##  1 B1     R1          Manual           285
##  2 B1     R2          Aspersión        310
##  3 B1     R3          Goteo            345
##  4 B1     R4          Microaspersión   325
##  5 B2     R1          Manual           270
##  6 B2     R2          Aspersión        300
##  7 B2     R3          Goteo            335
##  8 B2     R4          Microaspersión   315
##  9 B3     R1          Manual           300
## 10 B3     R2          Aspersión        325
## 11 B3     R3          Goteo            360
## 12 B3     R4          Microaspersión   340
## 13 B4     R1          Manual           260
## 14 B4     R2          Aspersión        290
## 15 B4     R3          Goteo            320
## 16 B4     R4          Microaspersión   305
## 17 B5     R1          Manual           290
## 18 B5     R2          Aspersión        315
## 19 B5     R3          Goteo            350
## 20 B5     R4          Microaspersión   330

#Estadísticos descriptivos

table(datos$Metodo)
## 
##      Aspersión          Goteo         Manual Microaspersión 
##              5              5              5              5
medias <- tapply(
  datos$Peso,
  datos$Metodo,
  mean
)

medias
##      Aspersión          Goteo         Manual Microaspersión 
##            308            342            281            323
media_general <- mean(datos$Peso)
media_general
## [1] 313.5
boxplot(
  Peso ~ Metodo,
  data = datos,
  xlab = "Método de riego",
  ylab = "Peso promedio (g)",
  main = "Distribución del peso según método de riego",
  las = 1
)

library(ggplot2)

ggplot(datos, aes(x = Metodo, y = Peso)) +
  stat_summary(
    fun = mean,
    geom = "bar",
    width = 0.5 ,
    fill = "lightgreen"
  ) +
  stat_summary(
    fun = mean,
    geom = "text",
    aes(label = round(after_stat(y), 1)),
    vjust = -0.5
  ) +
  labs(
    title = "Peso promedio según método de riego",
    x = "Método de riego",
    y = "Peso promedio (g)"
  ) +
  theme_classic()

library(ggplot2)

ggplot(datos, aes(
  x = Bloque,
  y = Peso,
  group = Metodo,
  color = Metodo
)) +
  stat_summary(
    fun = mean,
    geom = "line",
    linewidth = 1
  ) +
  stat_summary(
    fun = mean,
    geom = "point",
    size = 3
  ) +
  labs(
    title = "Perfil de medias: Método de riego vs. Bloque",
    x = "Bloque",
    y = "Peso promedio (g)",
    color = "Método de riego"
  ) +
  theme_classic()

Convertir método de riego en factor

datos$Metodo <- factor(datos$Metodo)

Modelo ANOVA

modelo <- aov(
  Peso ~ Metodo,
  data = datos
)

Residuos

residuos <- residuals(modelo)

1. NORMALIDAD

qqnorm(residuos)
qqline(residuos)

shapiro.test(residuos)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.93031, p-value = 0.1566

2. INDEPENDENCIA

plot(
  residuos,
  type = "b",
  xlab = "Orden de observación",
  ylab = "Residuos"
)
abline(h = 0, lty = 2)

3. HOMOGENEIDAD DE VARIANZAS

plot(
  fitted(modelo),
  residuos,
  xlab = "Valores ajustados",
  ylab = "Residuos"
)
abline(h = 0, lty = 2)

bartlett.test(
  residuos ~ datos$Metodo
)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  residuos by datos$Metodo
## Bartlett's K-squared = 0.15889, df = 3, p-value = 0.9839

9. ANOVA mediante aov()

datos$Metodo <- as.factor(datos$Metodo)
modelo <- aov(
  Peso ~ Metodo,
  data = datos
)

summary(modelo)
##             Df Sum Sq Mean Sq F value  Pr(>F)    
## Metodo       3   9945    3315   15.55 5.3e-05 ***
## Residuals   16   3410     213                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

11. Verificación de supuestos

residuos <- residuals(modelo)

Homogeneidad de varianzas

bartlett.test(
  Peso ~ Metodo,
  data = datos
)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Peso by Metodo
## Bartlett's K-squared = 0.15889, df = 3, p-value = 0.9839

Residuos vs ajustados

plot(
  fitted(modelo),
  residuos,
  xlab = "Valores ajustados",
  ylab = "Residuos",
  main = "Residuos vs valores ajustados"
)
abline(h = 0)

12. Comparaciones múltiples

str(datos)
## tibble [20 × 4] (S3: tbl_df/tbl/data.frame)
##  $ Bloque     : chr [1:20] "B1" "B1" "B1" "B1" ...
##  $ Tratamiento: chr [1:20] "R1" "R2" "R3" "R4" ...
##  $ Metodo     : Factor w/ 4 levels "Aspersión","Goteo",..: 3 1 2 4 3 1 2 4 3 1 ...
##  $ Peso       : num [1:20] 285 310 345 325 270 300 335 315 300 325 ...
names(datos)
## [1] "Bloque"      "Tratamiento" "Metodo"      "Peso"
model.frame(modelo)
##    Peso         Metodo
## 1   285         Manual
## 2   310      Aspersión
## 3   345          Goteo
## 4   325 Microaspersión
## 5   270         Manual
## 6   300      Aspersión
## 7   335          Goteo
## 8   315 Microaspersión
## 9   300         Manual
## 10  325      Aspersión
## 11  360          Goteo
## 12  340 Microaspersión
## 13  260         Manual
## 14  290      Aspersión
## 15  320          Goteo
## 16  305 Microaspersión
## 17  290         Manual
## 18  315      Aspersión
## 19  350          Goteo
## 20  330 Microaspersión
TukeyHSD(modelo)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Peso ~ Metodo, data = datos)
## 
## $Metodo
##                          diff        lwr         upr     p adj
## Goteo-Aspersión            34   7.583939  60.4160611 0.0097756
## Manual-Aspersión          -27 -53.416061  -0.5839389 0.0442696
## Microaspersión-Aspersión   15 -11.416061  41.4160611 0.3934409
## Manual-Goteo              -61 -87.416061 -34.5839389 0.0000326
## Microaspersión-Goteo      -19 -45.416061   7.4160611 0.2088315
## Microaspersión-Manual      42  15.583939  68.4160611 0.0016814
plot(TukeyHSD(modelo))