library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(skimr)
library(summarytools)
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
## 
## Attaching package: 'summarytools'
## 
## The following object is masked from 'package:tibble':
## 
##     view
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## 
## The following object is masked from 'package:dplyr':
## 
##     recode
## 
## The following object is masked from 'package:purrr':
## 
##     some
library(agricolae)
library(dplyr)
library(readxl)

A. Exploración de Datos

1. Construcción de la base de datos: poroto.xlsx

2. Carga de la base de datos: poroto.xlsx

# Importar base de datos
poroto <- read_excel("poroto.xlsx")

2.1. Explorar estructura

Tipo de variables y estructura

str(poroto)         
## tibble [24 × 4] (S3: tbl_df/tbl/data.frame)
##  $ Rep        : chr [1:24] "r1" "r1" "r1" "r1" ...
##  $ Variedad   : chr [1:24] "V1" "V1" "V2" "V2" ...
##  $ Dosis      : chr [1:24] "D0" "D1" "D0" "D1" ...
##  $ Rendimiento: num [1:24] 0.89 1.78 1.87 2.5 0.94 2 2.1 2.7 0.85 1.86 ...

Primeros registros

head(poroto)        
## # A tibble: 6 × 4
##   Rep   Variedad Dosis Rendimiento
##   <chr> <chr>    <chr>       <dbl>
## 1 r1    V1       D0           0.89
## 2 r1    V1       D1           1.78
## 3 r1    V2       D0           1.87
## 4 r1    V2       D1           2.5 
## 5 r2    V1       D0           0.94
## 6 r2    V1       D1           2

Resumen estadístico

summary(poroto)    
##      Rep              Variedad            Dosis            Rendimiento   
##  Length:24          Length:24          Length:24          Min.   :0.850  
##  Class :character   Class :character   Class :character   1st Qu.:1.345  
##  Mode  :character   Mode  :character   Mode  :character   Median :1.900  
##                                                           Mean   :1.864  
##                                                           3rd Qu.:2.425  
##                                                           Max.   :2.800

3. Medidas descriptivas del rendimiento para cada nivel de los factores y para cada combinación de los tratamientos.

3.1 Cambiar las variables de tipo “character” a tipo “Factor”

poroto <- poroto %>%
  mutate(
    Variedad = factor(Variedad),
    Dosis = factor(Dosis),
    Rep = factor(Rep) # solo identificador
  )

str(poroto)
## tibble [24 × 4] (S3: tbl_df/tbl/data.frame)
##  $ Rep        : Factor w/ 6 levels "r1","r2","r3",..: 1 1 1 1 2 2 2 2 3 3 ...
##  $ Variedad   : Factor w/ 2 levels "V1","V2": 1 1 2 2 1 1 2 2 1 1 ...
##  $ Dosis      : Factor w/ 2 levels "D0","D1": 1 2 1 2 1 2 1 2 1 2 ...
##  $ Rendimiento: num [1:24] 0.89 1.78 1.87 2.5 0.94 2 2.1 2.7 0.85 1.86 ...

3.2. medidas descriptivas del rendimiento para cada nivel de los factores y para cada combinación de los tratamientos.

Medias y desviaciones estándar por Variedad

poroto %>%
  group_by(Variedad) %>%
  summarise(
    media = mean(Rendimiento),
    sd = sd(Rendimiento)
  )
## # A tibble: 2 × 3
##   Variedad media    sd
##   <fct>    <dbl> <dbl>
## 1 V1        1.54 0.568
## 2 V2        2.19 0.518

Efecto de la variedad: La variedad Mung (V2) mostró un mayor rendimiento promedio (2.19 kg/parcela) en comparación con la variedad Alubia (V1), que presentó un promedio de 1.54 kg/parcela. La variabilidad entre repeticiones fue similar para ambas variedades, aunque ligeramente mayor en V1 (sd = 0.568) frente a V2 (sd = 0.518), lo que indica resultados más consistentes en V2.

Medias y sd por Dosis

poroto %>%
  group_by(Dosis) %>%
  summarise(
    media = mean(Rendimiento),
    sd = sd(Rendimiento)
  )
## # A tibble: 2 × 3
##   Dosis media    sd
##   <fct> <dbl> <dbl>
## 1 D0     1.39 0.445
## 2 D1     2.34 0.360

Efecto de la dosis: El tratamiento con el nuevo producto agroquímico (D1) produjo un aumento notable en el rendimiento promedio (2.34 kg/parcela) frente a las semillas no tratadas (D0), que alcanzaron 1.39 kg/parcela. Además, D1 mostró menor variabilidad (sd = 0.360) que D0 (sd = 0.445), sugiriendo un efecto más estable del tratamiento.

Medias y sd por combinación Variedad x Dosis

poroto %>%
  group_by(Variedad, Dosis) %>%
  summarise(
    media = mean(Rendimiento),
    sd = sd(Rendimiento)
  )
## `summarise()` has grouped output by 'Variedad'. You can override using the
## `.groups` argument.
## # A tibble: 4 × 4
## # Groups:   Variedad [2]
##   Variedad Dosis media    sd
##   <fct>    <fct> <dbl> <dbl>
## 1 V1       D0     1.03 0.185
## 2 V1       D1     2.04 0.249
## 3 V2       D0     1.74 0.316
## 4 V2       D1     2.63 0.121

Interacción Variedad × Dosis: Al considerar la interacción entre ambos factores, se observó que la combinación V2-D1 alcanzó el mayor rendimiento promedio (2.63 kg/parcela) con la menor variabilidad (sd = 0.121), mientras que la combinación V1-D0 presentó el rendimiento más bajo (1.03 kg/parcela) y una variabilidad intermedia (sd = 0.185). En general, para ambas variedades, la aplicación del producto agroquímico D1 mejoró el rendimiento, pero el efecto fue más marcado en la variedad Mung (V2).

4. Gráfico de interacción que muestre la relación entre los dos factores en estudio.

library(ggplot2)

ggplot(poroto, aes(x = Dosis, y = Rendimiento, group = Variedad, color = Variedad)) +
  stat_summary(fun = mean, geom = "line", size = 1) +
  stat_summary(fun = mean, geom = "point", size = 3) +
  labs(title = "Gráfico de interacción Variedad x Dosis",
       x = "Dosis de agroquímico",
       y = "Rendimiento (kg/parcela)")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Observaciones: Ambas variedades aumentan su rendimiento al pasar de D0 a D1, pero V2 tiene un incremento mayor. Las líneas para V1 y V2 son paralelas, lo que podria indicar que no hay interacción entre Variedad y Dosis. Esto significa que el efecto de la dosis no depende de la variedad. V2 responde más favorablemente a la dosis alta que V1.

B. Análisis de Varianza Factorial (ANOVA)

5. Hipótesis

5.1. fecto principal del Factor 1 (Variedad):

H0: No existen diferencias en el rendimiento medio entre las variedades V1 y V2. H1: Al menos una de las variedades difiere en el rendimiento medio.

5.2. Efecto principal del Factor 2 (Dosis):

H0: No existen diferencias en el rendimiento medio entre D0 (sin tratamiento) y D1 (con agroquímico). H1: Al menos una dosis difiere en el rendimiento medio.

5.3. Interacción (Variedad × Dosis):

H0: El efecto de la dosis es el mismo en ambas variedades (no hay interacción). H1: El efecto de la dosis depende de la variedad (sí hay interacción).

6. Ajuste del modelo de ANOVA factorial

# Ajustar modelo factorial
modelo <- aov(Rendimiento ~ Variedad * Dosis, data = poroto)

# Resumen del ANOVA
summary(modelo)
##                Df Sum Sq Mean Sq F value   Pr(>F)    
## Variedad        1  2.529   2.529  48.018 9.95e-07 ***
## Dosis           1  5.425   5.425 103.015 2.46e-09 ***
## Variedad:Dosis  1  0.022   0.022   0.422    0.523    
## Residuals      20  1.053   0.053                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

7. Interpretación de resultados (α = 0.01)

Variedad: F = 48.018, p < 0.001 (muy significativa). Esto indica que las variedades de poroto difieren significativamente en rendimiento, siendo importante elegir la variedad adecuada según las condiciones locales.

Dosis (tratamiento con agroquímico): F = 103.015, p < 0.001 (muy significativa). Esto demuestra que el tratamiento con el nuevo agroquímico aumenta significativamente el rendimiento de las parcelas.

Interacción Variedad × Dosis: F = 0.422, p = 0.523 (no significativa). Esto significa que el efecto del tratamiento sobre el rendimiento es similar para ambas variedades, es decir, no depende de la variedad de poroto utilizada.

C. Verificación de Supuestos

8. Elabore los gráficos diagnósticos del modelo (residuos vs. ajustados y Q-Q plot).

8.1. Gráfico de residuos vs valores ajustados

plot(modelo$fitted.values, modelo$residuals,
     xlab = "Valores Ajustados",
     ylab = "Residuos",
     main = "Residuos vs Valores Ajustados")
abline(h = 0, col = "red")

Interpretación: Los residuos parecen estar distribuidos de forma bastante aleatoria alrededor de cero. No hay una clara tendencia en forma de curva, lo cual indica que probablemente no hay problemas de no linealidad. La dispersión parece algo homogénea, pero hay pequeños puntos más alejados, lo que podría indicar algunos valores atípicos.

8.2. Q-Q plot

qqnorm(modelo$residuals)
qqline(modelo$residuals, col = "red")

Interpretación: Se observa que los datos siguen una distribución aproximadamente normal, ya que la mayoría de los cuantiles de la muestra se alinean estrechamente con la línea teórica de referencia.

9. Evaluación de la normalidad de los residuos utilizando la prueba de Shapiro-Wilk.

9.1. Prueba de Shapiro-Wilks

H0: SI se cumple el supuesto de Normalidad.

H1: NO se cumple el supuesto de Normalidad.

shapiro.test(modelo$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 0.97151, p-value = 0.7043

Interpretación: Dado que el p-value (0.7043) es mucho mayor que el nivel de significancia común de 0.05, no tenemos evidencia suficiente para rechazar la hipótesis nula. Por lo tanto, se concluye que los residuos del modelo siguen una distribución normal.

10. Evaluación de la homogeneidad de varianzas utilizando la prueba de Levene.

H0: SI cumple el supuesto de Homocedasticidad.

H1: NO se cumple el supuesto de Homocedasticidad

leveneTest(Rendimiento ~ Variedad * Dosis, data = poroto)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3  1.2728 0.3107
##       20

Interpretación: El valor p de 0.3107 es significativamente mayor que 0.05. Esto significa que no hay evidencia estadística para concluir que las varianzas de los cuatro grupos son diferentes. Por lo tanto, se puede asumir la homogeneidad de varianzas.

D. Comparación de Medias

11. Prueba de comparaciones múltiples

# Comparaciones múltiples
tukey <- TukeyHSD(modelo)

# Mostrar resultados para Variedad y Dosis
tukey
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Rendimiento ~ Variedad * Dosis, data = poroto)
## 
## $Variedad
##            diff       lwr       upr p adj
## V2-V1 0.6491667 0.4537502 0.8445831 1e-06
## 
## $Dosis
##            diff       lwr     upr p adj
## D1-D0 0.9508333 0.7554169 1.14625     0
## 
## $`Variedad:Dosis`
##                  diff         lwr       upr     p adj
## V2:D0-V1:D0 0.7100000  0.33918057 1.0808194 0.0001651
## V1:D1-V1:D0 1.0116667  0.64084724 1.3824861 0.0000013
## V2:D1-V1:D0 1.6000000  1.22918057 1.9708194 0.0000000
## V1:D1-V2:D0 0.3016667 -0.06915276 0.6724861 0.1371905
## V2:D1-V2:D0 0.8900000  0.51918057 1.2608194 0.0000087
## V2:D1-V1:D1 0.5883333  0.21751390 0.9591528 0.0013238

11.1. Para Variedad

TUKEY <- HSD.test(modelo, "Variedad")
TUKEY
## $statistics
##     MSerror Df    Mean       CV       MSD
##   0.0526575 20 1.86375 12.31239 0.1954165
## 
## $parameters
##    test   name.t ntr StudentizedRange alpha
##   Tukey Variedad   2         2.949998  0.05
## 
## $means
##    Rendimiento       std  r         se  Min Max    Q25   Q50    Q75
## V1    1.539167 0.5682582 12 0.06624292 0.85 2.4 1.0225 1.565 1.9475
## V2    2.188333 0.5176667 12 0.06624292 1.33 2.8 1.8425 2.300 2.6250
## 
## $comparison
## NULL
## 
## $groups
##    Rendimiento groups
## V2    2.188333      a
## V1    1.539167      b
## 
## attr(,"class")
## [1] "group"
plot(TUKEY)

11.2. Para Dosis

TUKEY <- HSD.test(modelo, "Dosis")
TUKEY
## $statistics
##     MSerror Df    Mean       CV       MSD
##   0.0526575 20 1.86375 12.31239 0.1954165
## 
## $parameters
##    test name.t ntr StudentizedRange alpha
##   Tukey  Dosis   2         2.949998  0.05
## 
## $means
##    Rendimiento       std  r         se  Min Max    Q25  Q50    Q75
## D0    1.388333 0.4453157 12 0.06624292 0.85 2.1 1.0225 1.34 1.7875
## D1    2.339167 0.3596073 12 0.06624292 1.78 2.8 1.9825 2.45 2.6250
## 
## $comparison
## NULL
## 
## $groups
##    Rendimiento groups
## D1    2.339167      a
## D0    1.388333      b
## 
## attr(,"class")
## [1] "group"
plot(TUKEY)

12. Gráfico de barras para visualización de medias de tratamientos.

library(ggplot2)
library(dplyr)

# Calcular medias y errores estándar
resumen <- poroto %>%
  group_by(Variedad, Dosis) %>%
  summarise(media = mean(Rendimiento),
            sd = sd(Rendimiento),
            n = n(),
            se = sd/sqrt(n))
## `summarise()` has grouped output by 'Variedad'. You can override using the
## `.groups` argument.
# Gráfico de barras con error estándar
ggplot(resumen, aes(x = Variedad, y = media, fill = Dosis)) +
  geom_bar(stat = "identity", position = position_dodge()) +
  geom_errorbar(aes(ymin = media - se, ymax = media + se),
                width = 0.2, position = position_dodge(0.9)) +
  labs(title = "Rendimiento promedio de poroto por variedad y dosis",
       x = "Variedad", y = "Rendimiento (kg/parcela)") +
  theme_minimal()

E. Conclusiones

13. Conclusión integradora

El experimento factorial 2x2 realizado en el NOA permitió evaluar el efecto de la variedad de poroto (Alubia y Mung) y el tratamiento con el agroquímico curasemillas sobre el rendimiento (kg/parcela). El análisis de varianza factorial mostró que tanto la Variedad como la Dosis tuvieron efectos altamente significativos sobre el rendimiento del poroto (p < 0.001), mientras que la interacción Variedad × Dosis no fue significativa (p = 0.523). Esto indica que:

Efecto de la Variedad: La variedad V2 rindió significativamente más que V1, según las comparaciones múltiples. Esto sugiere que la elección de la variedad es un factor crítico para optimizar el rendimiento.

Efecto del tratamiento (dosis de agroquímico): La aplicación del curasemillas también tuvo un efecto altamente significativo, aumentando el rendimiento respecto a las semillas no tratadas. Esto demuestra que el uso del agroquímico recomendado contribuye de manera consistente a mejorar la productividad.

Interacción Variedad × Dosis: La interacción no fue significativa, lo que indica que el efecto del tratamiento sobre el rendimiento no depende de la variedad sembrada. Es decir, tanto Alubia como Mung se benefician de manera similar del tratamiento, y no es necesario ajustar la dosis según la variedad.

Cumplimiento de supuestos: Los residuos del modelo cumplieron los supuestos de normalidad y homogeneidad de varianzas, lo que valida la confiabilidad del ANOVA realizado y las conclusiones obtenidas.

El rendimiento del poroto depende principalmente de la elección de la variedad y de la dosis aplicada. La interacción entre estos factores no fue significativa, lo que simplifica la interpretación: cada factor actúa de manera independiente. Por lo tanto, para maximizar el rendimiento se recomienda seleccionar la variedad V2 y aplicar la dosis D1.