Universidad Rafael Landívar
Campus San Luís Gonzaga S.J. Zacapa
Curso: Programación estadística con R
Docente Dr. Ezequiel López Bautista
Este análisis se basa en datos simulados de una muestra de 50 compras de refrescos realizadas por 50 clientes. Los datos provienen del ejercicio de distribución de compra de refrescos del libro de Anderson, Sweeney, & Williams (2008, pág. 28).
# Vector de caracteres con las bebidas compradas
bebidas <- c('Coke Classic','Sprite','Pepsi',
'Diet Coke','Coke Classic','Coke Classic','Pepsi','Diet Coke','Coke Classic',
'Diet Coke','Coke Classic','Coke Classic','Coke Classic','Diet Coke','Pepsi',
'Coke Classic','Coke Classic','Dr. Pepper','Dr. Pepper','Sprite','Coke Classic',
'Diet Coke','Pepsi','Diet Coke','Pepsi','Coke Classic','Pepsi',
'Pepsi','Coke Classic','Pepsi','Coke Classic','Coke Classic','Pepsi',
'Dr. Pepper','Pepsi','Pepsi','Sprite','Coke Classic','Coke Classic',
'Coke Classic','Sprite','Dr. Pepper','Diet Coke','Dr. Pepper','Pepsi',
'Coke Classic','Pepsi', 'Sprite','Coke Classic','Diet Coke')
# Mostrar las primeras 10 compras
head(bebidas, 10)
## [1] "Coke Classic" "Sprite" "Pepsi" "Diet Coke" "Coke Classic"
## [6] "Coke Classic" "Pepsi" "Diet Coke" "Coke Classic" "Diet Coke"
# Total de observaciones
cat("Total de compras registradas:", length(bebidas))
## Total de compras registradas: 50
# Transformar el vector bebidas en un objeto tipo factor
bebidas_factor <- factor(bebidas)
# Verificar la transformación
class(bebidas_factor)
## [1] "factor"
# Mostrar los niveles (categorías únicas)
levels(bebidas_factor)
## [1] "Coke Classic" "Diet Coke" "Dr. Pepper" "Pepsi" "Sprite"
Resultado: El vector se transformó a un objeto de
tipo factor con 5 niveles.
# Calcular la tabla de frecuencias de clase
tabla_frecuencias <- table(bebidas_factor)
print(tabla_frecuencias)
## bebidas_factor
## Coke Classic Diet Coke Dr. Pepper Pepsi Sprite
## 19 8 5 13 5
# Identificar el refresco más comprado
refresco_mas_comprado <- names(which.max(tabla_frecuencias))
frecuencia_maxima <- max(tabla_frecuencias)
cat("\n")
cat("El refresco MÁS comprado es:", refresco_mas_comprado, "\n")
## El refresco MÁS comprado es: Coke Classic
cat("Frecuencia de clase:", frecuencia_maxima, "compras\n")
## Frecuencia de clase: 19 compras
Interpretación: El refresco Coke Classic es el más popular con 19 compras de un total de 50.
# Calcular frecuencia relativa
frecuencia_relativa <- prop.table(tabla_frecuencias)
print(frecuencia_relativa)
## bebidas_factor
## Coke Classic Diet Coke Dr. Pepper Pepsi Sprite
## 0.38 0.16 0.10 0.26 0.10
# Calcular frecuencia porcentual
frecuencia_porcentual <- prop.table(tabla_frecuencias) * 100
print(round(frecuencia_porcentual, 2))
## bebidas_factor
## Coke Classic Diet Coke Dr. Pepper Pepsi Sprite
## 38 16 10 26 10
# Identificar porcentajes máximo y mínimo
refresco_max_porcentaje <- names(which.max(frecuencia_porcentual))
porcentaje_max <- max(frecuencia_porcentual)
refresco_min_porcentaje <- names(which.min(frecuencia_porcentual))
porcentaje_min <- min(frecuencia_porcentual)
cat("\n=== RESUMEN DE PORCENTAJES ===\n")
##
## === RESUMEN DE PORCENTAJES ===
cat("Refresco MÁS comprado:", refresco_max_porcentaje,
"con", round(porcentaje_max, 2), "%\n")
## Refresco MÁS comprado: Coke Classic con 38 %
cat("Refresco MENOS comprado:", refresco_min_porcentaje,
"con", round(porcentaje_min, 2), "%\n")
## Refresco MENOS comprado: Dr. Pepper con 10 %
Interpretación:
# Crear data frame con todas las frecuencias
df_bebidas <- data.frame(
Refresco = names(tabla_frecuencias),
Frecuencia = as.numeric(tabla_frecuencias),
Frecuencia_Relativa = as.numeric(frecuencia_relativa),
Porcentaje = as.numeric(round(frecuencia_porcentual, 2))
)
# Ordenar por frecuencia descendente
df_bebidas <- df_bebidas[order(-df_bebidas$Frecuencia), ]
# Mostrar el data frame con formato de tabla
knitr::kable(df_bebidas,
row.names = FALSE,
caption = "Tabla de Frecuencias de Compra de Refrescos",
col.names = c("Refresco", "Frecuencia", "Frec. Relativa", "Porcentaje (%)"))
| Refresco | Frecuencia | Frec. Relativa | Porcentaje (%) |
|---|---|---|---|
| Coke Classic | 19 | 0.38 | 38 |
| Pepsi | 13 | 0.26 | 26 |
| Diet Coke | 8 | 0.16 | 16 |
| Dr. Pepper | 5 | 0.10 | 10 |
| Sprite | 5 | 0.10 | 10 |
# Crear gráfica de barras
barplot(tabla_frecuencias,
main = "Distribución de Compras de Refrescos",
xlab = "Tipo de Refresco",
ylab = "Frecuencia (número de compras)",
col = c("red", "blue", "green", "orange", "purple"),
border = "black",
las = 2, # Rotar etiquetas del eje x
cex.names = 0.8) # Tamaño de las etiquetas
# Agregar línea de referencia en la media
abline(h = mean(tabla_frecuencias), col = "darkred", lty = 2, lwd = 2)
legend("topright",
legend = "Media",
col = "darkred",
lty = 2,
lwd = 2,
cex = 0.8)
# Crear gráfica de pastel
pie(tabla_frecuencias,
main = "Distribución Porcentual de Compras de Refrescos",
col = c("red", "blue", "green", "orange", "purple"),
labels = paste0(names(tabla_frecuencias), "\n",
round(frecuencia_porcentual, 1), "%"),
cex = 0.9)
# Agregar leyenda
legend("topright",
legend = names(tabla_frecuencias),
fill = c("red", "blue", "green", "orange", "purple"),
cex = 0.8,
title = "Refrescos")
Del análisis de las 50 compras de refrescos se concluye: