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)
# Importar base de datos
poroto <- read_excel("poroto.xlsx")
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 ...
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
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
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 ...
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.
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.
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).
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.
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.
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.
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).
# 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
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.
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.
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.
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.
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.
# 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
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)
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)
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()
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.