Crear un vector de paquetes
pacotes <- c("agricolae", "performance", "ggplot2",
"outliers","car", "readxl","tidyverse",
"RColorBrewer","nortest", "stats",
"agridat", "performance")
Script para instalar y cargar librerias y dependencias
if(sum(as.numeric(!pacotes %in% installed.packages())) != 0){
instalador <- pacotes[!pacotes %in% installed.packages()]
for(i in 1:length(instalador)) {
install.packages(instalador, dependencies = T)
break()}
sapply(pacotes, require, character = T)
} else {
sapply(pacotes, require, character = T)
}
## Loading required package: agricolae
## Loading required package: performance
## Loading required package: ggplot2
## Loading required package: outliers
## Loading required package: car
## Loading required package: carData
## Loading required package: readxl
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::recode() masks car::recode()
## ✖ purrr::some() masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Loading required package: RColorBrewer
##
## Loading required package: nortest
##
## Loading required package: agridat
## Warning: package 'agridat' was built under R version 4.3.2
## agricolae performance ggplot2 outliers car readxl
## TRUE TRUE TRUE TRUE TRUE TRUE
## tidyverse RColorBrewer nortest stats agridat performance
## TRUE TRUE TRUE TRUE TRUE TRUE
Realizar el análisis de varianza (ANOVA)
modelo_anova <- aov(Lulos ~ DosisN + Aplicación + DosisN:Aplicación,
data = df)
summary(modelo_anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## DosisN 3 1001.2 333.7 114.257 2.41e-14 ***
## Aplicación 1 11.3 11.3 3.862 0.0611 .
## DosisN:Aplicación 3 2.3 0.8 0.267 0.8482
## Residuals 24 70.1 2.9
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Homogeneidad de varianzas ——————-
Calcular los residuos del modelo ANOVA
residuos <- residuals(modelo_anova)
Agrupar los residuos por los niveles de las interacciones
grupo <- paste(df$DosisN, df$Lulos, sep = "_")
grupos_residuos <- split(residuos, grupo)
Realizar la prueba de homogeneidad de varianzas con
fligner.test
fligner.test(grupos_residuos)
##
## Fligner-Killeen test of homogeneity of variances
##
## data: grupos_residuos
## Fligner-Killeen:med chi-squared = 23.137, df = 26, p-value = 0.6252
Gráfico
residuos_estandarizados <- rstandard(modelo_anova)
Obtener los valores ajustados (fitted values)
valores_ajustados <- fitted(modelo_anova)
Crear un gráfico de residuos estandarizados vs. valores
ajustados
plot(valores_ajustados, residuos_estandarizados, pch = 11 ,
col = "blue",
xlab = "Valores Ajustados", ylab = "Residuos Estandarizados",
main = "Gráfico de Residuos Est. vs. Valores Ajustados")

plot(valores_ajustados, residuos_estandarizados, pch = 11 ,
col = "blue",
xlab = "Valores Ajustados", ylab = "Residuos Estandarizados",
main = "Gráfico de Residuos Est. vs. Valores Ajustados")
abline(h = 0, lty = 2, col = "red")

Obtener lsmeans (medias ajustadas) para la interacción
EVALUAR LOS EFECTOS SIMPLES COMO “DosisN”
LSD.test(modelo_anova,c("DosisN"),
console=TRUE)
##
## Study: modelo_anova ~ c("DosisN")
##
## LSD t Test for Lulos
##
## Mean Square Error: 2.921042
##
## DosisN, means and individual ( 95 %) CI
##
## Lulos std r se LCL UCL Min Max Q25
## Control 6.500 1.789653 8 0.6042601 5.252869 7.747131 4.8 9.3 5.200
## Ridomil_2cc 12.300 2.383275 8 0.6042601 11.052869 13.547131 8.3 16.1 11.200
## Ridomil_4cc 18.025 1.023649 8 0.6042601 16.777869 19.272131 16.2 19.2 17.425
## Ridomil_6cc 21.125 1.425031 8 0.6042601 19.877869 22.372131 18.7 23.1 20.375
## Q50 Q75
## Control 5.50 8.225
## Ridomil_2cc 12.40 13.400
## Ridomil_4cc 18.20 18.675
## Ridomil_6cc 21.35 22.100
##
## Alpha: 0.05 ; DF Error: 24
## Critical Value of t: 2.063899
##
## least Significant Difference: 1.76371
##
## Treatments with the same letter are not significantly different.
##
## Lulos groups
## Ridomil_6cc 21.125 a
## Ridomil_4cc 18.025 b
## Ridomil_2cc 12.300 c
## Control 6.500 d
EVALUAR LOS EFECTOS SIMPLES COMO Lulos
LSD.test(modelo_anova,c("Lulos"),
console=TRUE)
##
## Study: modelo_anova ~ c("Lulos")
##
## LSD t Test for Lulos
##
## Mean Square Error: 2.921042
##
## Lulos, means and individual ( 95 %) CI
##
## Lulos std r se LCL UCL Min Max Q25 Q50 Q75
## 4.8 4.8 NA 1 1.7091055 1.272580 8.327420 4.8 4.8 4.8 4.8 4.8
## 5.2 5.2 0 3 0.9867525 3.163443 7.236557 5.2 5.2 5.2 5.2 5.2
## 5.8 5.8 NA 1 1.7091055 2.272580 9.327420 5.8 5.8 5.8 5.8 5.8
## 8.2 8.2 NA 1 1.7091055 4.672580 11.727420 8.2 8.2 8.2 8.2 8.2
## 8.3 8.3 0 2 1.2085201 5.805737 10.794263 8.3 8.3 8.3 8.3 8.3
## 9.3 9.3 NA 1 1.7091055 5.772580 12.827420 9.3 9.3 9.3 9.3 9.3
## 10.3 10.3 NA 1 1.7091055 6.772580 13.827420 10.3 10.3 10.3 10.3 10.3
## 11.5 11.5 NA 1 1.7091055 7.972580 15.027420 11.5 11.5 11.5 11.5 11.5
## 12.3 12.3 NA 1 1.7091055 8.772580 15.827420 12.3 12.3 12.3 12.3 12.3
## 12.5 12.5 NA 1 1.7091055 8.972580 16.027420 12.5 12.5 12.5 12.5 12.5
## 13.1 13.1 NA 1 1.7091055 9.572580 16.627420 13.1 13.1 13.1 13.1 13.1
## 14.3 14.3 NA 1 1.7091055 10.772580 17.827420 14.3 14.3 14.3 14.3 14.3
## 16.1 16.1 NA 1 1.7091055 12.572580 19.627420 16.1 16.1 16.1 16.1 16.1
## 16.2 16.2 NA 1 1.7091055 12.672580 19.727420 16.2 16.2 16.2 16.2 16.2
## 17.2 17.2 NA 1 1.7091055 13.672580 20.727420 17.2 17.2 17.2 17.2 17.2
## 17.5 17.5 NA 1 1.7091055 13.972580 21.027420 17.5 17.5 17.5 17.5 17.5
## 18.2 18.2 0 2 1.2085201 15.705737 20.694263 18.2 18.2 18.2 18.2 18.2
## 18.5 18.5 NA 1 1.7091055 14.972580 22.027420 18.5 18.5 18.5 18.5 18.5
## 18.7 18.7 NA 1 1.7091055 15.172580 22.227420 18.7 18.7 18.7 18.7 18.7
## 19.2 19.2 0 2 1.2085201 16.705737 21.694263 19.2 19.2 19.2 19.2 19.2
## 19.7 19.7 NA 1 1.7091055 16.172580 23.227420 19.7 19.7 19.7 19.7 19.7
## 20.6 20.6 NA 1 1.7091055 17.072580 24.127420 20.6 20.6 20.6 20.6 20.6
## 21.1 21.1 NA 1 1.7091055 17.572580 24.627420 21.1 21.1 21.1 21.1 21.1
## 21.6 21.6 NA 1 1.7091055 18.072580 25.127420 21.6 21.6 21.6 21.6 21.6
## 22.1 22.1 0 2 1.2085201 19.605737 24.594263 22.1 22.1 22.1 22.1 22.1
## 23.1 23.1 NA 1 1.7091055 19.572580 26.627420 23.1 23.1 23.1 23.1 23.1
##
## Alpha: 0.05 ; DF Error: 24
## Critical Value of t: 2.063899
##
## Groups according to probability of means differences and alpha level( 0.05 )
##
## Treatments with the same letter are not significantly different.
##
## Lulos groups
## 23.1 23.1 a
## 22.1 22.1 a
## 21.6 21.6 ab
## 21.1 21.1 abc
## 20.6 20.6 abcd
## 19.7 19.7 abcd
## 19.2 19.2 abcd
## 18.7 18.7 abcde
## 18.5 18.5 abcde
## 18.2 18.2 bcde
## 17.5 17.5 bcdef
## 17.2 17.2 bcdefg
## 16.2 16.2 cdefgh
## 16.1 16.1 defgh
## 14.3 14.3 efghi
## 13.1 13.1 fghij
## 12.5 12.5 ghijk
## 12.3 12.3 ghijk
## 11.5 11.5 hijk
## 10.3 10.3 ijkl
## 9.3 9.3 jkl
## 8.3 8.3 klm
## 8.2 8.2 klm
## 5.8 5.8 lm
## 5.2 5.2 m
## 4.8 4.8 m
EVALUAR LOS EFECTOS COMPUESTOS PORQUE DIERON DIF. SIGNIF.EN LA
INTERACCIÓN
resultados_lsd<-LSD.test(modelo_anova,c("DosisN","Aplicación"),
console=T)
##
## Study: modelo_anova ~ c("DosisN", "Aplicación")
##
## LSD t Test for Lulos
##
## Mean Square Error: 2.921042
##
## DosisN:Aplicación, means and individual ( 95 %) CI
##
## Lulos std r se LCL UCL Min
## Control:BombaEspalda 5.875 1.6276261 4 0.8545528 4.11129 7.63871 4.8
## Control:Dron 7.125 1.9448650 4 0.8545528 5.36129 8.88871 5.2
## Ridomil_2cc:BombaEspalda 11.300 2.1039645 4 0.8545528 9.53629 13.06371 8.3
## Ridomil_2cc:Dron 13.300 2.4819347 4 0.8545528 11.53629 15.06371 10.3
## Ridomil_4cc:BombaEspalda 17.775 1.3375973 4 0.8545528 16.01129 19.53871 16.2
## Ridomil_4cc:Dron 18.275 0.6994045 4 0.8545528 16.51129 20.03871 17.5
## Ridomil_6cc:BombaEspalda 20.625 1.4268263 4 0.8545528 18.86129 22.38871 18.7
## Ridomil_6cc:Dron 21.625 1.4268263 4 0.8545528 19.86129 23.38871 19.7
## Max Q25 Q50 Q75
## Control:BombaEspalda 8.3 5.100 5.20 5.975
## Control:Dron 9.3 5.650 7.00 8.475
## Ridomil_2cc:BombaEspalda 13.1 10.700 11.90 12.500
## Ridomil_2cc:Dron 16.1 11.950 13.40 14.750
## Ridomil_4cc:BombaEspalda 19.2 16.950 17.85 18.675
## Ridomil_4cc:Dron 19.2 18.025 18.20 18.450
## Ridomil_6cc:BombaEspalda 22.1 20.125 20.85 21.350
## Ridomil_6cc:Dron 23.1 21.125 21.85 22.350
##
## Alpha: 0.05 ; DF Error: 24
## Critical Value of t: 2.063899
##
## least Significant Difference: 2.494263
##
## Treatments with the same letter are not significantly different.
##
## Lulos groups
## Ridomil_6cc:Dron 21.625 a
## Ridomil_6cc:BombaEspalda 20.625 ab
## Ridomil_4cc:Dron 18.275 bc
## Ridomil_4cc:BombaEspalda 17.775 c
## Ridomil_2cc:Dron 13.300 d
## Ridomil_2cc:BombaEspalda 11.300 d
## Control:Dron 7.125 e
## Control:BombaEspalda 5.875 e
Crear un data frame con los resultados de la prueba LSD
resultados_lsd_df <- data.frame(
DosisN_Aplicación = rownames(resultados_lsd$groups),
Lulos = resultados_lsd$groups$Lulos,
groups = resultados_lsd$groups$groups
)
Separar la columna DosisN_Aplicación en DosisN y Aplicación
resultados_lsd_df <- separate(resultados_lsd_df,
DosisN_Aplicación, into = c("DosisN", "Aplicación"),
sep = ":")
resultados_lsd_df$DosisN<-
factor(resultados_lsd_df$DosisN,
levels = c("Ridomil_6cc",
"Ridomil_4cc", "Ridomil_2cc", "Control"))
resultados_lsd_df
## DosisN Aplicación Lulos groups
## 1 Ridomil_6cc Dron 21.625 a
## 2 Ridomil_6cc BombaEspalda 20.625 ab
## 3 Ridomil_4cc Dron 18.275 bc
## 4 Ridomil_4cc BombaEspalda 17.775 c
## 5 Ridomil_2cc Dron 13.300 d
## 6 Ridomil_2cc BombaEspalda 11.300 d
## 7 Control Dron 7.125 e
## 8 Control BombaEspalda 5.875 e
Crear un gráfico de barras agrupadas
library(ggplot2)
ggplot(resultados_lsd_df, aes(x = DosisN, y = Lulos, fill = Aplicación, label = groups)) +
geom_bar(position = "dodge", stat = "identity") +
labs(title = "Comparación de Medias Significativas",
x = "Dosis", y = "Lulos/Planta") +
scale_fill_manual(values = c("Dron" = "blue", "BombaEspalda" = "green")) +
theme_minimal() +
theme(legend.position = "top")

Visualizar todas las paletas disponibles
display.brewer.all()

Crear un gráfico de barras agrupadas con paleta pastel
ggplot(resultados_lsd_df, aes(x = DosisN, y = Lulos, fill = Aplicación, label = groups)) +
geom_bar(position = "dodge", stat = "identity") +
labs(title = "Comparación de Medias Significativas",
x = "Dosis N", y = "Lulos/planta") +
scale_fill_brewer(palette = "Blues") +
theme_minimal() +
theme(legend.position = "top")

Colocando los nombres
Crear un gráfico de barras agrupadas con paleta pastel
Aumentar el tamaño de letra
library(ggplot2)
ggplot(resultados_lsd_df, aes(x = DosisN, y = Lulos, fill = Aplicación, label = groups)) +
geom_bar(position = "dodge", stat = "identity") +
geom_text(position = position_dodge(width = 0.9),
vjust = -0.5,
aes(group = Aplicación),
size = 4) +
labs(title = "Comparación de Medias Significativas",
x = "Dosis N", y = "Lulos/planta") +
scale_fill_brewer(palette = "Blues") +
theme_minimal() +
theme(legend.position = "top")
