Con el objetivo de poder determinar si existe o no una significancia
estadística para la diferencia entre el Rendimiento del
Optimizador de la Zafra 2023-2024 y el de la Zafra 2024-2025 se
realizan una pruebas de hipótesis para medias / medianas.
library(dplyr)
library(ggplot2)
library(ggpubr)
dataset <- read.csv(file = 'C:/Users/sbarrios/OneDrive - Universidad Galileo/Data Science/R/Proyectos/Pantaleon/Optimizador PrO GT/Data/Backtesting Hypothesis Testing 24-25.csv')
dataset
Funciones de Densidad: Rendimiento Industrial Optimizador
df1 <- data.frame(yield = dataset$Actual_Yield_2024,zafra=rep('2024', sum(!is.na(dataset$Actual_Yield_2024))))
df2 <- data.frame(yield = dataset$Actual_Yield_2025,zafra=rep('2025', sum(!is.na(dataset$Actual_Yield_2024))))
df_yield <- data.frame("Zafra" = c("2024","2025"),
"Media" = c(mean(df1$yield, na.rm=TRUE),mean(df2$yield, na.rm=TRUE)),
"Mediana" = c(median(df1$yield, na.rm=TRUE),median(df2$yield, na.rm=TRUE)),
"Desv. Estándar" = c(sd(df1$yield, na.rm=TRUE),sd(df2$yield, na.rm=TRUE))
)
df_yield
ggplot() +
geom_density(data = df1, aes(x = yield,fill=zafra),alpha=0.7) +
geom_density(data = df2, aes(x = yield,fill=zafra),alpha=0.7)

ggtitle("Yield Distributions")
$title
[1] "Yield Distributions"
attr(,"class")
[1] "labels"
Prueba de Normalidad de Yield Benefits
Se conduce una prueba Shapiro-Wilk para los beneficios de
rendimiento de la zafra 2024 y 2025 con el objetivo de verificar la
asunción de normalidad. El test Shapiro-Wilk considera
como Hipótesis Nula \(H_0\) que los
datos son normalmente distribuidos.
# Shapiro-Wilk normality test for Yield Benefits 2024
with(dataset, shapiro.test(dataset$Actual_Yield_2024))
Shapiro-Wilk normality test
data: dataset$Actual_Yield_2024
W = 0.99718, p-value = 0.5598
A un nivel de significancia del 5% fallamos en rechazar la hipótesis
nula de normalidad y concluimos que los datos están posiblemente
normalmente distribuidos.
# Shapiro-Wilk normality test for Yield Benefits 2025
with(dataset, shapiro.test(dataset$Actual_Yield_2025[!is.na(dataset$Actual_Yield_2025)]))
Shapiro-Wilk normality test
data: dataset$Actual_Yield_2025[!is.na(dataset$Actual_Yield_2025)]
W = 0.77615, p-value < 2.2e-16
A un nivel de significancia del 5% rechazamos la hipótesis nula de
normalidad y concluimos que los datos no están normalmente
distribuidos.
Prueba Wilcoxon
Debido a que ambas muestras no cumplen el requisito de ser
normalmente distribuidas, se elige la prueba Wilcoxon de Dos
Muestras No Pareadas como una alternativa no-paramétrica a la
prueba t-Test de Dos Muestras No Pareadas, la cual es
útil para comparar dos grupos independientes de muestras cuando
no están normalmente distribuidas.
\(H_0: Gap2024 - Gap2025 \geq
0\)
\(H_1: Gap2024 - Gap2025 <
0\)
x <- dataset$Actual_Yield_2024
y <- dataset$Actual_Yield_2025[!is.na(dataset$Actual_Yield_2025)]
res_Wilcox <- wilcox.test(x, y, alternative = "less", mu = 0.0, conf.level = 0.95)
res_Wilcox
Wilcoxon rank sum test with continuity correction
data: x and y
W = 38318, p-value < 2.2e-16
alternative hypothesis: true location shift is less than 0
res_Wilcox$p.value
[1] 1.132273e-67
A un nivel de confianza del 95%, con un p-value de
1.132273e-67 rechazamos la hipótesis nula \(H_0: Gap2024 - Gap2025 \geq 0.0\)
y existe evidencia estadística suficiente para concluir que
\(H_1: Gap2024 - Gap2025 <
0.0\), es decir, el Rendimiento para la zafra 2025 es
mayor al de la zafra 2024.
Prueba t-Test de Dos Muestras No Pareadas Varianzas Desiguales
Se muestra como ejercicio la prueba t-Test de Dos Muestras No
Pareadas, la cual es útil para comparar dos grupos
independientes de muestras cuando se asume que están normalmente
distribuidas.
\(H_0: Gap2024 - Gap2025 \geq
0.0\)
\(H_1: Gap2024 - Gap2025 <
0.0\)
res_tTest <- t.test(x, y, alternative = 'less', mu = 0.0, var.equal = FALSE)
res_tTest
Welch Two Sample t-test
data: x and y
t = -18.347, df = 785.64, p-value < 2.2e-16
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
-Inf -1.066991
sample estimates:
mean of x mean of y
88.83275 90.00495
res_tTest$p.value
[1] 3.769374e-63
A un nivel de confianza del 95%, con un p-value de
3.769374e-63 rechazamos la hipótesis nula \(H_0: Gap2024 - Gap2025 \geq 0.0\)
y existe evidencia estadística suficiente para concluir que
\(H_1: Gap2024 - Gap2025 <
0.0\), por lo que el Rendimiento para la zafra 2025 es
mayor al de la zafra 2024.
Prueba ANOVA para Dos Muestras (Un factor)
Se realiza una prueba ANOVA con las dos muestras, equivalente a
prueba t-Student, para un solo factor (Zafra).
dataset_anova <- data.frame(Zafra = c(rep('2024', sum(!is.na(dataset$Actual_Yield_2024))),rep('2025', sum(!is.na(dataset$Actual_Yield_2024)))),
Yield = c(dataset$Actual_Yield_2024,dataset$Actual_Yield_2025))
dataset_anova <- dataset_anova[!is.na(dataset_anova$Yield),]
dataset_anova$Zafra <- factor(dataset_anova$Zafra)
one.way <- aov(Yield ~ Zafra, data = dataset_anova)
summary(one.way)
Df Sum Sq Mean Sq F value Pr(>F)
Zafra 1 322.8 322.8 348.8 <2e-16 ***
Residuals 940 869.8 0.9
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Con un p-value < 2.0e-16 se rechaza la hipótesis
nula de medias iguales y el factor Zafra tiene un
impacto significativo en el Rendimiento del Optimizador, y por lo tanto
se concluye que las medias son diferentes.
ggplot(data = dataset_anova, aes(x = Zafra, y = Yield)) + geom_boxplot() + geom_jitter(aes(color = Zafra)) + ggtitle("Box Plot Rendimiento Optimizador Real")

LS0tDQp0aXRsZTogIlByTyBHdWF0ZW1hbGEgWWllbGQgSHlwb3RoZXNpcyBUZXN0aW5nIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KQ29uIGVsIG9iamV0aXZvIGRlIHBvZGVyIGRldGVybWluYXIgc2kgZXhpc3RlIG8gbm8gdW5hIHNpZ25pZmljYW5jaWEgZXN0YWTDrXN0aWNhIHBhcmEgbGEgZGlmZXJlbmNpYSBlbnRyZSBlbCAqUmVuZGltaWVudG8gZGVsIE9wdGltaXphZG9yKiBkZSBsYSBaYWZyYSAyMDIzLTIwMjQgeSBlbCBkZSBsYSBaYWZyYSAyMDI0LTIwMjUgc2UgcmVhbGl6YW4gdW5hIHBydWViYXMgZGUgaGlww7N0ZXNpcyBwYXJhIG1lZGlhcyAvIG1lZGlhbmFzLiANCg0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShnZ3B1YnIpDQpgYGANCg0KYGBge3J9DQpkYXRhc2V0IDwtIHJlYWQuY3N2KGZpbGUgPSAnQzovVXNlcnMvc2JhcnJpb3MvT25lRHJpdmUgLSBVbml2ZXJzaWRhZCBHYWxpbGVvL0RhdGEgU2NpZW5jZS9SL1Byb3llY3Rvcy9QYW50YWxlb24vT3B0aW1pemFkb3IgUHJPIEdUL0RhdGEvQmFja3Rlc3RpbmcgSHlwb3RoZXNpcyBUZXN0aW5nIDI0LTI1LmNzdicpDQpkYXRhc2V0DQpgYGANCg0KDQojIyMgRnVuY2lvbmVzIGRlIERlbnNpZGFkOiBSZW5kaW1pZW50byBJbmR1c3RyaWFsIE9wdGltaXphZG9yDQoNCmBgYHtyfQ0KZGYxIDwtIGRhdGEuZnJhbWUoeWllbGQgPSBkYXRhc2V0JEFjdHVhbF9ZaWVsZF8yMDI0LHphZnJhPXJlcCgnMjAyNCcsIHN1bSghaXMubmEoZGF0YXNldCRBY3R1YWxfWWllbGRfMjAyNCkpKSkNCmRmMiA8LSBkYXRhLmZyYW1lKHlpZWxkID0gZGF0YXNldCRBY3R1YWxfWWllbGRfMjAyNSx6YWZyYT1yZXAoJzIwMjUnLCBzdW0oIWlzLm5hKGRhdGFzZXQkQWN0dWFsX1lpZWxkXzIwMjQpKSkpDQoNCg0KZGZfeWllbGQgPC0gZGF0YS5mcmFtZSgiWmFmcmEiID0gYygiMjAyNCIsIjIwMjUiKSwgDQogICAgICAgICAgICAgICAgICAgICAgIk1lZGlhIiA9IGMobWVhbihkZjEkeWllbGQsIG5hLnJtPVRSVUUpLG1lYW4oZGYyJHlpZWxkLCBuYS5ybT1UUlVFKSksDQogICAgICAgICAgICAgICAgICAgICAgIk1lZGlhbmEiID0gYyhtZWRpYW4oZGYxJHlpZWxkLCBuYS5ybT1UUlVFKSxtZWRpYW4oZGYyJHlpZWxkLCBuYS5ybT1UUlVFKSksDQogICAgICAgICAgICAgICAgICAgICAgIkRlc3YuIEVzdMOhbmRhciIgPSBjKHNkKGRmMSR5aWVsZCwgbmEucm09VFJVRSksc2QoZGYyJHlpZWxkLCBuYS5ybT1UUlVFKSkNCiAgICAgICAgICAgICAgICAgICAgICApDQoNCmRmX3lpZWxkDQoNCmdncGxvdCgpICsgDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGYxLCBhZXMoeCA9IHlpZWxkLGZpbGw9emFmcmEpLGFscGhhPTAuNykgKyANCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBkZjIsIGFlcyh4ID0geWllbGQsZmlsbD16YWZyYSksYWxwaGE9MC43KQ0KICBnZ3RpdGxlKCJZaWVsZCBEaXN0cmlidXRpb25zIikNCmBgYA0KDQojIyMgUHJ1ZWJhIGRlIE5vcm1hbGlkYWQgZGUgWWllbGQgQmVuZWZpdHMNCg0KU2UgY29uZHVjZSB1bmEgcHJ1ZWJhICpTaGFwaXJvLVdpbGsqIHBhcmEgbG9zIGJlbmVmaWNpb3MgZGUgcmVuZGltaWVudG8gZGUgbGEgemFmcmEgMjAyNCB5IDIwMjUgY29uIGVsIG9iamV0aXZvIGRlIHZlcmlmaWNhciBsYSBhc3VuY2nDs24gZGUgKm5vcm1hbGlkYWQqLg0KRWwgdGVzdCAqU2hhcGlyby1XaWxrKiBjb25zaWRlcmEgY29tbyBIaXDDs3Rlc2lzIE51bGEgJEhfMCQgcXVlIGxvcyBkYXRvcyBzb24gbm9ybWFsbWVudGUgZGlzdHJpYnVpZG9zLg0KDQpgYGB7cn0NCiMgU2hhcGlyby1XaWxrIG5vcm1hbGl0eSB0ZXN0IGZvciBZaWVsZCBCZW5lZml0cyAyMDI0DQp3aXRoKGRhdGFzZXQsIHNoYXBpcm8udGVzdChkYXRhc2V0JEFjdHVhbF9ZaWVsZF8yMDI0KSkNCmBgYA0KQSB1biBuaXZlbCBkZSBzaWduaWZpY2FuY2lhIGRlbCA1JSBmYWxsYW1vcyBlbiByZWNoYXphciBsYSBoaXDDs3Rlc2lzIG51bGEgZGUgbm9ybWFsaWRhZCB5IGNvbmNsdWltb3MgcXVlIGxvcyBkYXRvcyAqKmVzdMOhbiBwb3NpYmxlbWVudGUgbm9ybWFsbWVudGUgZGlzdHJpYnVpZG9zKiouDQoNCmBgYHtyfQ0KIyBTaGFwaXJvLVdpbGsgbm9ybWFsaXR5IHRlc3QgZm9yIFlpZWxkIEJlbmVmaXRzIDIwMjUNCndpdGgoZGF0YXNldCwgc2hhcGlyby50ZXN0KGRhdGFzZXQkQWN0dWFsX1lpZWxkXzIwMjVbIWlzLm5hKGRhdGFzZXQkQWN0dWFsX1lpZWxkXzIwMjUpXSkpDQpgYGANCkEgdW4gbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBkZWwgNSUgcmVjaGF6YW1vcyBsYSBoaXDDs3Rlc2lzIG51bGEgZGUgbm9ybWFsaWRhZCB5IGNvbmNsdWltb3MgcXVlIGxvcyBkYXRvcyAqKm5vIGVzdMOhbiBub3JtYWxtZW50ZSBkaXN0cmlidWlkb3MqKi4NCg0KDQojIyMgUHJ1ZWJhIFdpbGNveG9uDQoNCkRlYmlkbyBhIHF1ZSBhbWJhcyBtdWVzdHJhcyBubyBjdW1wbGVuIGVsIHJlcXVpc2l0byBkZSBzZXIgbm9ybWFsbWVudGUgZGlzdHJpYnVpZGFzLCBzZSBlbGlnZSBsYSBwcnVlYmEgKipXaWxjb3hvbiBkZSBEb3MgTXVlc3RyYXMgTm8gUGFyZWFkYXMqKiBjb21vIHVuYSBhbHRlcm5hdGl2YSBuby1wYXJhbcOpdHJpY2EgYSBsYSBwcnVlYmEgKip0LVRlc3QgZGUgRG9zIE11ZXN0cmFzIE5vIFBhcmVhZGFzKiosIGxhIGN1YWwgZXMgw7p0aWwgcGFyYSBjb21wYXJhciBkb3MgZ3J1cG9zIGluZGVwZW5kaWVudGVzIGRlIG11ZXN0cmFzIGN1YW5kbyAqKm5vIGVzdMOhbiBub3JtYWxtZW50ZSBkaXN0cmlidWlkYXMqKi4NCg0KJEhfMDogR2FwMjAyNCAtIEdhcDIwMjUgXGdlcSAwJA0KDQokSF8xOiBHYXAyMDI0IC0gR2FwMjAyNSA8IDAkDQoNCg0KYGBge3J9DQp4IDwtIGRhdGFzZXQkQWN0dWFsX1lpZWxkXzIwMjQNCnkgPC0gZGF0YXNldCRBY3R1YWxfWWllbGRfMjAyNVshaXMubmEoZGF0YXNldCRBY3R1YWxfWWllbGRfMjAyNSldDQoNCnJlc19XaWxjb3ggPC0gd2lsY294LnRlc3QoeCwgeSwgYWx0ZXJuYXRpdmUgPSAibGVzcyIsIG11ID0gMC4wLCBjb25mLmxldmVsID0gMC45NSkNCnJlc19XaWxjb3gNCmBgYA0KYGBge3J9DQpyZXNfV2lsY294JHAudmFsdWUNCmBgYA0KQSB1biBuaXZlbCBkZSBjb25maWFuemEgZGVsIDk1JSwgY29uIHVuICoqcC12YWx1ZSBkZSAxLjEzMjI3M2UtNjcgcmVjaGF6YW1vcyBsYSBoaXDDs3Rlc2lzIG51bGEgJEhfMDogR2FwMjAyNCAtIEdhcDIwMjUgXGdlcSAwLjAkKiogeSBleGlzdGUgZXZpZGVuY2lhIGVzdGFkw61zdGljYSBzdWZpY2llbnRlIHBhcmEgY29uY2x1aXIgcXVlICoqJEhfMTogR2FwMjAyNCAtIEdhcDIwMjUgPCAwLjAkKiosIGVzIGRlY2lyLCBlbCBSZW5kaW1pZW50byBwYXJhIGxhIHphZnJhIDIwMjUgZXMgbWF5b3IgYWwgZGUgbGEgemFmcmEgMjAyNC4NCg0KDQojIyMgUHJ1ZWJhIHQtVGVzdCBkZSBEb3MgTXVlc3RyYXMgTm8gUGFyZWFkYXMgVmFyaWFuemFzIERlc2lndWFsZXMNCg0KU2UgbXVlc3RyYSBjb21vIGVqZXJjaWNpbyBsYSBwcnVlYmEgKip0LVRlc3QgZGUgRG9zIE11ZXN0cmFzIE5vIFBhcmVhZGFzKiosIGxhIGN1YWwgZXMgw7p0aWwgcGFyYSBjb21wYXJhciBkb3MgZ3J1cG9zIGluZGVwZW5kaWVudGVzIGRlIG11ZXN0cmFzIGN1YW5kbyBzZSBhc3VtZSBxdWUgZXN0w6FuIG5vcm1hbG1lbnRlIGRpc3RyaWJ1aWRhcy4NCg0KJEhfMDogR2FwMjAyNCAtIEdhcDIwMjUgXGdlcSAwLjAkDQoNCiRIXzE6IEdhcDIwMjQgLSBHYXAyMDI1IDwgMC4wJA0KDQpgYGB7cn0NCnJlc190VGVzdCA8LSB0LnRlc3QoeCwgeSwgYWx0ZXJuYXRpdmUgPSAnbGVzcycsIG11ID0gMC4wLCB2YXIuZXF1YWwgPSBGQUxTRSkNCnJlc190VGVzdA0KYGBgDQpgYGB7cn0NCnJlc190VGVzdCRwLnZhbHVlDQpgYGANCkEgdW4gbml2ZWwgZGUgY29uZmlhbnphIGRlbCA5NSUsIGNvbiB1biAqKnAtdmFsdWUgZGUgMy43NjkzNzRlLTYzIHJlY2hhemFtb3MgbGEgaGlww7N0ZXNpcyBudWxhICRIXzA6IEdhcDIwMjQgLSBHYXAyMDI1IFxnZXEgMC4wJCoqIHkgZXhpc3RlIGV2aWRlbmNpYSBlc3RhZMOtc3RpY2Egc3VmaWNpZW50ZSBwYXJhIGNvbmNsdWlyIHF1ZSAqKiRIXzE6IEdhcDIwMjQgLSBHYXAyMDI1IDwgMC4wJCoqLCBwb3IgbG8gcXVlIGVsIFJlbmRpbWllbnRvIHBhcmEgbGEgemFmcmEgMjAyNSBlcyBtYXlvciBhbCBkZSBsYSB6YWZyYSAyMDI0Lg0KDQoNCiMjIyBQcnVlYmEgQU5PVkEgcGFyYSBEb3MgTXVlc3RyYXMgKFVuIGZhY3RvcikNCg0KU2UgcmVhbGl6YSB1bmEgcHJ1ZWJhIEFOT1ZBIGNvbiBsYXMgZG9zIG11ZXN0cmFzLCBlcXVpdmFsZW50ZSBhIHBydWViYSB0LVN0dWRlbnQsIHBhcmEgdW4gc29sbyBmYWN0b3IgKFphZnJhKS4NCmBgYHtyfQ0KZGF0YXNldF9hbm92YSA8LSBkYXRhLmZyYW1lKFphZnJhID0gYyhyZXAoJzIwMjQnLCBzdW0oIWlzLm5hKGRhdGFzZXQkQWN0dWFsX1lpZWxkXzIwMjQpKSkscmVwKCcyMDI1Jywgc3VtKCFpcy5uYShkYXRhc2V0JEFjdHVhbF9ZaWVsZF8yMDI0KSkpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZaWVsZCA9IGMoZGF0YXNldCRBY3R1YWxfWWllbGRfMjAyNCxkYXRhc2V0JEFjdHVhbF9ZaWVsZF8yMDI1KSkNCmRhdGFzZXRfYW5vdmEgPC0gZGF0YXNldF9hbm92YVshaXMubmEoZGF0YXNldF9hbm92YSRZaWVsZCksXQ0KZGF0YXNldF9hbm92YSRaYWZyYSA8LSBmYWN0b3IoZGF0YXNldF9hbm92YSRaYWZyYSkNCm9uZS53YXkgPC0gYW92KFlpZWxkIH4gWmFmcmEsIGRhdGEgPSBkYXRhc2V0X2Fub3ZhKQ0Kc3VtbWFyeShvbmUud2F5KQ0KYGBgDQoNCkNvbiB1biAqKnAtdmFsdWUgPCAyLjBlLTE2Kiogc2UgcmVjaGF6YSBsYSBoaXDDs3Rlc2lzIG51bGEgZGUgbWVkaWFzIGlndWFsZXMgeSBlbCBmYWN0b3IgKipaYWZyYSoqIHRpZW5lIHVuIGltcGFjdG8gc2lnbmlmaWNhdGl2byBlbiBlbCBSZW5kaW1pZW50byBkZWwgT3B0aW1pemFkb3IsIHkgcG9yIGxvIHRhbnRvIHNlIGNvbmNsdXllIHF1ZSAqKmxhcyBtZWRpYXMgc29uIGRpZmVyZW50ZXMqKi4gDQoNCg0KYGBge3J9DQpnZ3Bsb3QoZGF0YSA9IGRhdGFzZXRfYW5vdmEsIGFlcyh4ID0gWmFmcmEsIHkgPSBZaWVsZCkpICsgZ2VvbV9ib3hwbG90KCkgKyBnZW9tX2ppdHRlcihhZXMoY29sb3IgPSBaYWZyYSkpICsgZ2d0aXRsZSgiQm94IFBsb3QgUmVuZGltaWVudG8gT3B0aW1pemFkb3IgUmVhbCIpDQpgYGANCg==