El objetivo es resumir descriptivamente la información de una muestra de 69 marcas de cerveza. La base contiene variables cuantitativas, como precio, calorías y porcentaje de alcohol, y variables cualitativas, como tipo de cerveza y origen.
Nota importante para evitar confusiones: aunque el
archivo mencionado fue beer2.csv, en la carpeta también
aparece beer.csv, que sí contiene exactamente las 69 marcas
del enunciado. Por eso este informe se construye con
beer.csv.
beer <- read.csv("/Users/samueleastmondestupinan/Desktop/beer.csv")
beer$tipo <- factor(
beer$tipo,
levels = 1:5,
labels = c("Lager artesanal", "Clara artesanal", "Lager importada",
"Cerveza normal y helada", "Baja en calorías / sin alcohol")
)
beer$origen <- factor(
beer$origen,
levels = c(0, 1),
labels = c("Nacional", "Importada")
)
str(beer)
## 'data.frame': 69 obs. of 6 variables:
## $ marca : chr "m1" "m2" "m3" "m4" ...
## $ precio : chr "6,24" "4,79" "5,96" "4,7" ...
## $ calorias: int 159 160 160 162 157 151 155 135 162 142 ...
## $ poralcoh: chr "5,2" "5" "4,9" "4,9" ...
## $ tipo : Factor w/ 5 levels "Lager artesanal",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ origen : Factor w/ 2 levels "Nacional","Importada": 2 2 2 2 2 2 2 2 2 2 ...
| Variable | Tipo estadístico | Escala | Interpretación |
|---|---|---|---|
| marca | Cualitativa identificadora | Nominal | Código de la marca: m1, m2, …, m69. No se promedia. |
| precio | Cuantitativa continua | Razón | Precio de una caja de seis botellas de 12 onzas. |
| calorias | Cuantitativa continua/discreta | Razón | Calorías contenidas en una unidad de 12 onzas. |
| poralcoh | Cuantitativa continua | Razón | Porcentaje de alcohol por 12 onzas. |
| tipo | Cualitativa | Nominal | Clasificación comercial de la cerveza. |
| origen | Cualitativa dicotómica | Nominal | Nacional o importada. |
Idea para explicar en clase: las variables cuantitativas se resumen con media, mediana, desviación estándar, cuartiles y coeficiente de variación. Las variables cualitativas se resumen con frecuencias y porcentajes.
La base analizada tiene 69 marcas y 6 variables principales de análisis: precio, calorías, porcentaje de alcohol, tipo y origen.
dim(beer)
## [1] 69 6
head(beer)
## marca precio calorias poralcoh tipo origen
## 1 m1 6,24 159 5,2 Lager artesanal Importada
## 2 m2 4,79 160 5 Lager artesanal Importada
## 3 m3 5,96 160 4,9 Lager artesanal Importada
## 4 m4 4,7 162 4,9 Lager artesanal Importada
## 5 m5 4,11 157 5,5 Lager artesanal Importada
## 6 m6 3,85 151 4,9 Lager artesanal Importada
| Código | Categoría | Frecuencia | Porcentaje |
|---|---|---|---|
| 1 | Lager artesanal | 13 | 18.8% |
| 2 | Clara artesanal | 17 | 24.6% |
| 3 | Lager importada | 10 | 14.5% |
| 4 | Cerveza normal y helada | 16 | 23.2% |
| 5 | Baja en calorías / sin alcohol | 13 | 18.8% |
Interpretación: la categoría con mayor presencia es clara artesanal, con 17 marcas. Esto representa 24.6% de la muestra. La muestra está repartida entre los cinco tipos, aunque no de forma exactamente uniforme.
tabla_tipo <- beer |>
count(tipo) |>
mutate(porcentaje = 100*n/sum(n))
kable(tabla_tipo, digits = 2)
| tipo | n | porcentaje |
|---|---|---|
| Lager artesanal | 13 | 18.84 |
| Clara artesanal | 17 | 24.64 |
| Lager importada | 10 | 14.49 |
| Cerveza normal y helada | 16 | 23.19 |
| Baja en calorías / sin alcohol | 13 | 18.84 |
| Código | Categoría | Frecuencia | Porcentaje |
|---|---|---|---|
| 0 | Nacional | 15 | 21.7% |
| 1 | Importada | 54 | 78.3% |
Interpretación: predominan las cervezas importadas: hay 54 importadas de 69, equivalentes al 78.3%. Las nacionales son 15, equivalentes al 21.7%.
tabla_origen <- beer |>
count(origen) |>
mutate(porcentaje = 100*n/sum(n))
kable(tabla_origen, digits = 2)
| origen | n | porcentaje |
|---|---|---|
| Nacional | 15 | 21.74 |
| Importada | 54 | 78.26 |
| Variable | n | Media | Mediana | Desv. est. | Varianza | Mín. | Q1 | Q3 | Máx. | IQR | CV | Asimetría |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Precio caja de seis botellas | 69 | 4.96 | 4.79 | 1.45 | 2.09 | 2.36 | 3.90 | 6.24 | 7.80 | 2.34 | 29.1% | 0.11 |
| Calorías por 12 onzas | 69 | 142.35 | 148 | 29.90 | 894.14 | 58 | 142 | 160 | 201 | 18 | 21.0% | -1.30 |
| Porcentaje de alcohol | 69 | 4.42 | 4.90 | 1.57 | 2.48 | 0 | 4.40 | 5.10 | 6 | 0.70 | 35.6% | -2.22 |
El precio promedio es 4.96, mientras que la mediana es 4.79. Como ambos valores son cercanos, el centro de la distribución se ubica alrededor de 5 unidades monetarias. La desviación estándar es 1.45, y el coeficiente de variación es 29.1%, lo que indica una variabilidad moderada del precio.
Límites: [0.39, 9.75]. No se detectan valores atípicos.
El promedio de calorías es 142.35 y la mediana es 148. La mediana es mayor que la media porque existen cervezas con muy pocas calorías, especialmente las bajas en calorías o sin alcohol, que jalan el promedio hacia abajo.
Límites: [115, 187]. Valores atípicos: 58, 60, 70, 71, 72, 82, 95, 96, 96, 105, 110, 110, 201.
El porcentaje promedio de alcohol es 4.42%, mientras que la mediana es 4.90%. La mediana es mayor que la media porque hay varias cervezas con 0% de alcohol, lo cual reduce el promedio.
Límites: [3.35, 6.15]. Valores atípicos: 0, 0, 0, 0, 0, 0, 0.
resumen <- beer |>
summarise(
n = n(),
media_precio = mean(precio),
mediana_precio = median(precio),
sd_precio = sd(precio),
media_calorias = mean(calorias),
mediana_calorias = median(calorias),
sd_calorias = sd(calorias),
media_alcohol = mean(poralcoh),
mediana_alcohol = median(poralcoh),
sd_alcohol = sd(poralcoh)
)
kable(resumen, digits = 2)
| n | media_precio | mediana_precio | sd_precio | media_calorias | mediana_calorias | sd_calorias | media_alcohol | mediana_alcohol | sd_alcohol |
|---|---|---|---|---|---|---|---|---|---|
| 69 | NA | 4,79 | NA | 142.35 | 148 | 29.9 | NA | 4,9 | NA |
| Tipo | precio_count | precio_mean | precio_median | precio_std | calorias_count | calorias_mean | calorias_median | calorias_std | poralcoh_count | poralcoh_mean | poralcoh_median | poralcoh_std |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Baja en calorías / sin alcohol | 13 | 4.08 | 4.02 | 1.13 | 13 | 89.15 | 95 | 22.59 | 13 | 1.92 | 0 | 2.17 |
| Cerveza normal y helada | 16 | 3.60 | 3.86 | 0.63 | 16 | 145.75 | 144.50 | 6.44 | 16 | 4.90 | 4.90 | 0.37 |
| Clara artesanal | 17 | 6.50 | 6.42 | 0.76 | 17 | 165.41 | 163 | 15.56 | 17 | 5.28 | 5.30 | 0.60 |
| Lager artesanal | 13 | 4.86 | 4.79 | 1.20 | 13 | 154.38 | 157 | 9.59 | 13 | 4.94 | 4.90 | 0.35 |
| Lager importada | 10 | 5.82 | 5.75 | 0.90 | 10 | 151.20 | 149 | 6.68 | 10 | 4.77 | 4.95 | 0.33 |
Interpretación por tipo:
beer |>
group_by(tipo) |>
summarise(
n = n(),
precio_promedio = mean(precio),
calorias_promedio = mean(calorias),
alcohol_promedio = mean(poralcoh),
.groups = "drop"
) |>
kable(digits = 2)
| tipo | n | precio_promedio | calorias_promedio | alcohol_promedio |
|---|---|---|---|---|
| Lager artesanal | 13 | NA | 154.38 | NA |
| Clara artesanal | 17 | NA | 165.41 | NA |
| Lager importada | 10 | NA | 151.20 | NA |
| Cerveza normal y helada | 16 | NA | 145.75 | NA |
| Baja en calorías / sin alcohol | 13 | NA | 89.15 | NA |
| Origen | precio_count | precio_mean | precio_median | precio_std | calorias_count | calorias_mean | calorias_median | calorias_std | poralcoh_count | poralcoh_mean | poralcoh_median | poralcoh_std |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Importada | 54 | 4.71 | 4.06 | 1.48 | 54 | 143.39 | 148 | 30.67 | 54 | 4.50 | 4.90 | 1.53 |
| Nacional | 15 | 5.86 | 5.68 | 0.90 | 15 | 138.60 | 148 | 27.61 | 15 | 4.13 | 4.90 | 1.74 |
Interpretación: en esta muestra, las cervezas nacionales presentan un precio promedio mayor que las importadas. Sin embargo, hay que explicar esto con cuidado: el resultado depende de la composición de la muestra y de los tipos de cerveza incluidos; no significa automáticamente que toda cerveza nacional sea más costosa.
beer |>
group_by(origen) |>
summarise(
n = n(),
precio_promedio = mean(precio),
calorias_promedio = mean(calorias),
alcohol_promedio = mean(poralcoh),
.groups = "drop"
) |>
kable(digits = 2)
| origen | n | precio_promedio | calorias_promedio | alcohol_promedio |
|---|---|---|---|---|
| Nacional | 15 | NA | 138.60 | NA |
| Importada | 54 | NA | 143.39 | NA |
Matriz de correlación:
| Variable | precio | calorias | poralcoh |
|---|---|---|---|
| precio | 1 | 0.424 | 0.295 |
| calorias | 0.424 | 1 | 0.883 |
| poralcoh | 0.295 | 0.883 | 1 |
La relación más fuerte se observa entre calorías y porcentaje de alcohol, con una correlación aproximada de 0.883. Esto quiere decir que, dentro de esta muestra, las cervezas con mayor porcentaje de alcohol tienden también a tener más calorías.
La relación entre precio y calorías es positiva pero moderada, aproximadamente 0.424. La relación entre precio y alcohol también es positiva pero más débil, aproximadamente 0.295.
beer$precio <- as.numeric(beer$precio)
beer$calorias <- as.numeric(beer$calorias)
beer$poralcoh <- as.numeric(beer$poralcoh)
cor(beer[, c("precio", "calorias", "poralcoh")])
## precio calorias poralcoh
## precio 1 NA NA
## calorias NA 1 NA
## poralcoh NA NA 1
cor(beer[, c("precio", "calorias", "poralcoh")])
## precio calorias poralcoh
## precio 1 NA NA
## calorias NA 1 NA
## poralcoh NA NA 1
ggplot(beer, aes(x = precio)) +
geom_histogram(bins = 10, fill = "#4C78A8", color = "white") +
labs(title = "Distribución del precio", x = "Precio", y = "Frecuencia")
ggplot(beer, aes(x = calorias)) +
geom_histogram(bins = 10, fill = "#59A14F", color = "white") +
labs(title = "Distribución de calorías", x = "Calorías", y = "Frecuencia")
ggplot(beer, aes(x = poralcoh)) +
geom_histogram(bins = 10, fill = "#F28E2B", color = "white") +
labs(title = "Distribución del porcentaje de alcohol", x = "Alcohol (%)", y = "Frecuencia")
ggplot(beer, aes(x = tipo, y = precio)) +
geom_boxplot(fill = "#E15759", alpha = 0.7) +
coord_flip() +
labs(title = "Precio por tipo de cerveza", x = "Tipo", y = "Precio")
ggplot(beer, aes(x = poralcoh, y = calorias, color = tipo)) +
geom_point(size = 2) +
labs(title = "Relación entre alcohol y calorías", x = "Alcohol (%)", y = "Calorías")
En cuanto al precio, la media es 4.96 y la mediana es 4.79. Esto indica que el precio típico se encuentra alrededor de 5 unidades monetarias por caja de seis botellas. La variabilidad del precio es moderada, con un coeficiente de variación de 29.1%.
Las calorías tienen media de 142.35 y mediana de 148. La distribución presenta sesgo negativo porque hay cervezas de muy bajo contenido calórico. Esto se observa especialmente en la categoría de baja en calorías / sin alcohol.
El porcentaje de alcohol tiene media de 4.42% y mediana de 4.90%. La diferencia se explica por la presencia de cervezas sin alcohol, que bajan la media. Por eso, para explicar el consumo típico, la mediana puede ser más representativa que el promedio.
La asociación más clara aparece entre calorías y alcohol: a mayor porcentaje de alcohol, tienden a aumentar las calorías. Este resultado tiene sentido desde el punto de vista del producto, pero debe interpretarse como asociación descriptiva, no como causalidad.
A partir de la información disponible, es posible analizar las cervezas según su tipo y procedencia, comparando aspectos como el precio, las calorías y el porcentaje de alcohol. Para obtener resultados más precisos, es conveniente realizar comparaciones entre los diferentes grupos de cerveza. En primer lugar, se puede comparar el tipo de cerveza con su precio para determinar cuáles categorías tienen costos más altos o más bajos. También es útil relacionar el tipo de cerveza con las calorías y el contenido de alcohol, con el fin de comprobar si las características de cada categoría coinciden con lo que se espera de ellas. Finalmente, comparar el origen con el precio puede ayudar a identificar posibles diferencias entre cervezas de distintas procedencias.
En general, es importante analizar los datos por categorías y no basarse únicamente en los promedios de toda la muestra. Debido a que existen diferentes tipos de cerveza, considerar cada grupo por separado permite obtener conclusiones más claras y evitar interpretaciones que puedan ser incorrectas.