El presente trabajo tiene como finalidad realizar un análisis estadístico de tres tipos de café tostado y molido: La Casona, Tostao Selecto y Café Córdoba, mediante la evaluación de dos características sensoriales: aroma y sabor.
Para el análisis de los datos se utilizaron herramientas estadísticas en el programa R, con el propósito de comparar los tratamientos y determinar si existen diferencias significativas entre las calificaciones obtenidas.
Evaluar y comparar las características sensoriales de aroma y sabor de tres tipos de café mediante herramientas de estadística descriptiva y análisis de varianza (ANOVA).
En esta sección se presentan los procedimientos estadísticos realizados para analizar las variables aroma y sabor, incluyendo estadísticas descriptivas, análisis de varianza, comparaciones múltiples y pruebas de los supuestos del modelo.
Se construyó una base de datos con las calificaciones de aroma correspondientes a los tres tipos de café, considerando seis observaciones por tratamiento.
# BASE DE DATOS: AROMA
cafe_aroma <- data.frame(
Tratamiento = factor(
rep(
c("La Casona", "Tostao Selecto", "Cafe Cordoba"),
each = 6
),
levels = c("La Casona", "Tostao Selecto", "Cafe Cordoba")
),
Aroma = c(
8, 9, 7, 8, 9, 8,
7, 8, 8, 7, 9, 8,
6, 7, 6, 8, 7, 6
)
)
cat("\n===== BASE DE DATOS: AROMA =====\n")
print(cafe_aroma)
# TABLA DE PROMEDIOS
tabla_promedios_aroma <- aggregate(
Aroma ~ Tratamiento,
data = cafe_aroma,
FUN = mean
)
cat("\n===== PROMEDIOS DE AROMA =====\n")
print(tabla_promedios_aroma, row.names = FALSE)
# ESTADISTICAS DESCRIPTIVAS
tabla_descriptiva_aroma <- do.call(
rbind,
lapply(levels(cafe_aroma$Tratamiento), function(grupo) {
datos <- cafe_aroma[
cafe_aroma$Tratamiento == grupo,
]
data.frame(
Tratamiento = grupo,
n = nrow(datos),
Media_Aroma = mean(datos$Aroma),
DE_Aroma = sd(datos$Aroma)
)
})
)
cat("\n===== ESTADISTICAS DESCRIPTIVAS: AROMA =====\n")
print(tabla_descriptiva_aroma, row.names = FALSE)
# ANOVA PARA AROMA
modelo_aroma <- aov(
Aroma ~ Tratamiento,
data = cafe_aroma
)
tabla_anova_aroma <- anova(modelo_aroma)
cat("\n===== ANOVA: AROMA =====\n")
print(tabla_anova_aroma)
# PRUEBA DE TUKEY
tabla_tukey_aroma <- TukeyHSD(modelo_aroma)
cat("\n===== PRUEBA DE TUKEY: AROMA =====\n")
print(tabla_tukey_aroma)
# NORMALIDAD: SHAPIRO-WILK
tabla_shapiro_aroma <- shapiro.test(
residuals(modelo_aroma)
)
cat("\n===== SHAPIRO-WILK: AROMA =====\n")
print(tabla_shapiro_aroma)
# HOMOGENEIDAD DE VARIANZAS: LEVENE
if (!requireNamespace("car", quietly = TRUE)) {
install.packages(
"car",
repos = "https://cloud.r-project.org"
)
}
tabla_levene_aroma <- car::leveneTest(
Aroma ~ Tratamiento,
data = cafe_aroma,
center = median
)
cat("\n===== LEVENE: AROMA =====\n")
print(tabla_levene_aroma)
# GRAFICA 1: DIAGRAMA DE CAJA
boxplot(
Aroma ~ Tratamiento,
data = cafe_aroma,
col = c("lightblue", "lightgreen", "lightpink"),
main = "Grafica 1: Diagrama de caja - Aroma",
xlab = "Tipo de cafe",
ylab = "Calificacion",
ylim = c(1, 10)
)
# GRAFICA 2: COMPARACIONES DE TUKEY
plot(tabla_tukey_aroma)
title(main = "Grafica 2: Comparaciones de Tukey - Aroma")
# GRAFICA 3: Q-Q DE NORMALIDAD
qqnorm(
residuals(modelo_aroma),
main = "Grafica 3: Normalidad de residuos - Aroma"
)
qqline(
residuals(modelo_aroma),
col = "red"
)
# GRAFICA 4: DIAGNOSTICO DEL ANOVA
par(mfrow = c(2, 2))
plot(modelo_aroma)
par(mfrow = c(1, 1))
##
## ===== BASE DE DATOS: AROMA =====
## Tratamiento Aroma
## 1 La Casona 8
## 2 La Casona 9
## 3 La Casona 7
## 4 La Casona 8
## 5 La Casona 9
## 6 La Casona 8
## 7 Tostao Selecto 7
## 8 Tostao Selecto 8
## 9 Tostao Selecto 8
## 10 Tostao Selecto 7
## 11 Tostao Selecto 9
## 12 Tostao Selecto 8
## 13 Cafe Cordoba 6
## 14 Cafe Cordoba 7
## 15 Cafe Cordoba 6
## 16 Cafe Cordoba 8
## 17 Cafe Cordoba 7
## 18 Cafe Cordoba 6
##
## ===== PROMEDIOS DE AROMA =====
## Tratamiento Aroma
## La Casona 8.166667
## Tostao Selecto 7.833333
## Cafe Cordoba 6.666667
##
## ===== ESTADISTICAS DESCRIPTIVAS: AROMA =====
## Tratamiento n Media_Aroma DE_Aroma
## La Casona 6 8.166667 0.7527727
## Tostao Selecto 6 7.833333 0.7527727
## Cafe Cordoba 6 6.666667 0.8164966
##
## ===== ANOVA: AROMA =====
## Analysis of Variance Table
##
## Response: Aroma
## Df Sum Sq Mean Sq F value Pr(>F)
## Tratamiento 2 7.4444 3.7222 6.2037 0.01088 *
## Residuals 15 9.0000 0.6000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## ===== PRUEBA DE TUKEY: AROMA =====
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Aroma ~ Tratamiento, data = cafe_aroma)
##
## $Tratamiento
## diff lwr upr p adj
## Tostao Selecto-La Casona -0.3333333 -1.494957 0.828290667 0.7409430
## Cafe Cordoba-La Casona -1.5000000 -2.661624 -0.338376000 0.0113961
## Cafe Cordoba-Tostao Selecto -1.1666667 -2.328291 -0.005042667 0.0489452
##
##
## ===== SHAPIRO-WILK: AROMA =====
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo_aroma)
## W = 0.95369, p-value = 0.4858
##
##
## ===== LEVENE: AROMA =====
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0.2174 0.8071
## 15
Se construyó una base de datos con las calificaciones de sabor de los tres tipos de café, utilizando seis observaciones por tratamiento.
# BASE DE DATOS: SABOR
cafe_sabor <- data.frame(
Tratamiento = factor(
rep(
c("La Casona", "Tostao Selecto", "Cafe Cordoba"),
each = 6
),
levels = c("La Casona", "Tostao Selecto", "Cafe Cordoba")
),
Sabor = c(
7, 8, 7, 9, 8, 8,
8, 9, 8, 7, 8, 9,
6, 7, 7, 6, 8, 7
)
)
cat("\n===== BASE DE DATOS: SABOR =====\n")
print(cafe_sabor)
# TABLA DE PROMEDIOS
tabla_promedios_sabor <- aggregate(
Sabor ~ Tratamiento,
data = cafe_sabor,
FUN = mean
)
cat("\n===== PROMEDIOS DE SABOR =====\n")
print(tabla_promedios_sabor, row.names = FALSE)
# ESTADISTICAS DESCRIPTIVAS
tabla_descriptiva_sabor <- do.call(
rbind,
lapply(levels(cafe_sabor$Tratamiento), function(grupo) {
datos <- cafe_sabor[
cafe_sabor$Tratamiento == grupo,
]
data.frame(
Tratamiento = grupo,
n = nrow(datos),
Media_Sabor = mean(datos$Sabor),
DE_Sabor = sd(datos$Sabor)
)
})
)
cat("\n===== ESTADISTICAS DESCRIPTIVAS: SABOR =====\n")
print(tabla_descriptiva_sabor, row.names = FALSE)
# ANOVA PARA SABOR
modelo_sabor <- aov(
Sabor ~ Tratamiento,
data = cafe_sabor
)
tabla_anova_sabor <- anova(modelo_sabor)
cat("\n===== ANOVA: SABOR =====\n")
print(tabla_anova_sabor)
# PRUEBA DE TUKEY
tabla_tukey_sabor <- TukeyHSD(modelo_sabor)
cat("\n===== PRUEBA DE TUKEY: SABOR =====\n")
print(tabla_tukey_sabor)
# NORMALIDAD: SHAPIRO-WILK
tabla_shapiro_sabor <- shapiro.test(
residuals(modelo_sabor)
)
cat("\n===== SHAPIRO-WILK: SABOR =====\n")
print(tabla_shapiro_sabor)
# HOMOGENEIDAD DE VARIANZAS: LEVENE
tabla_levene_sabor <- car::leveneTest(
Sabor ~ Tratamiento,
data = cafe_sabor,
center = median
)
cat("\n===== LEVENE: SABOR =====\n")
print(tabla_levene_sabor)
# GRAFICA 5: DIAGRAMA DE CAJA
boxplot(
Sabor ~ Tratamiento,
data = cafe_sabor,
col = c("lightblue", "lightgreen", "lightpink"),
main = "Grafica 5: Diagrama de caja - Sabor",
xlab = "Tipo de cafe",
ylab = "Calificacion",
ylim = c(1, 10)
)
# GRAFICA 6: COMPARACIONES DE TUKEY
plot(tabla_tukey_sabor)
title(main = "Grafica 6: Comparaciones de Tukey - Sabor")
# GRAFICA 7: Q-Q DE NORMALIDAD
qqnorm(
residuals(modelo_sabor),
main = "Grafica 7: Normalidad de residuos - Sabor"
)
qqline(
residuals(modelo_sabor),
col = "red"
)
# GRAFICA 8: DIAGNOSTICO DEL ANOVA
par(mfrow = c(2, 2))
plot(modelo_sabor)
par(mfrow = c(1, 1))
##
## ===== BASE DE DATOS: SABOR =====
## Tratamiento Sabor
## 1 La Casona 7
## 2 La Casona 8
## 3 La Casona 7
## 4 La Casona 9
## 5 La Casona 8
## 6 La Casona 8
## 7 Tostao Selecto 8
## 8 Tostao Selecto 9
## 9 Tostao Selecto 8
## 10 Tostao Selecto 7
## 11 Tostao Selecto 8
## 12 Tostao Selecto 9
## 13 Cafe Cordoba 6
## 14 Cafe Cordoba 7
## 15 Cafe Cordoba 7
## 16 Cafe Cordoba 6
## 17 Cafe Cordoba 8
## 18 Cafe Cordoba 7
##
## ===== PROMEDIOS DE SABOR =====
## Tratamiento Sabor
## La Casona 7.833333
## Tostao Selecto 8.166667
## Cafe Cordoba 6.833333
##
## ===== ESTADISTICAS DESCRIPTIVAS: SABOR =====
## Tratamiento n Media_Sabor DE_Sabor
## La Casona 6 7.833333 0.7527727
## Tostao Selecto 6 8.166667 0.7527727
## Cafe Cordoba 6 6.833333 0.7527727
##
## ===== ANOVA: SABOR =====
## Analysis of Variance Table
##
## Response: Sabor
## Df Sum Sq Mean Sq F value Pr(>F)
## Tratamiento 2 5.7778 2.88889 5.098 0.02045 *
## Residuals 15 8.5000 0.56667
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## ===== PRUEBA DE TUKEY: SABOR =====
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Sabor ~ Tratamiento, data = cafe_sabor)
##
## $Tratamiento
## diff lwr upr p adj
## Tostao Selecto-La Casona 0.3333333 -0.7955623 1.4622289 0.7282733
## Cafe Cordoba-La Casona -1.0000000 -2.1288956 0.1288956 0.0865323
## Cafe Cordoba-Tostao Selecto -1.3333333 -2.4622289 -0.2044377 0.0201164
##
##
## ===== SHAPIRO-WILK: SABOR =====
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo_sabor)
## W = 0.92015, p-value = 0.1301
##
##
## ===== LEVENE: SABOR =====
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0 1
## 15
A partir del análisis estadístico realizado, se encontró que existen diferencias significativas entre los tres tipos de café evaluados en las características sensoriales de aroma y sabor, de acuerdo con los resultados del análisis de varianza (ANOVA).
En cuanto al aroma, La Casona presentó el promedio más alto (8,17), seguido de Tostao Selecto (7,83) y Café Córdoba (6,67). La prueba de Tukey mostró diferencias significativas entre Café Córdoba y los otros dos tratamientos, mientras que entre La Casona y Tostao Selecto no se encontraron diferencias significativas.
Respecto al sabor, Tostao Selecto obtuvo el promedio más alto (8,17), seguido de La Casona (7,83) y Café Córdoba (6,83). Según la prueba de Tukey, solamente se encontraron diferencias significativas entre Tostao Selecto y Café Córdoba.
En general, Tostao Selecto y La Casona presentaron las mejores calificaciones sensoriales, mientras que Café Córdoba obtuvo los promedios más bajos en ambas características evaluadas.