Se busca realizar una descripción general de los datos correspondientes a una muestra de 69 marcas de cerveza. La información incluye variables cuantitativas, entre ellas el precio, las calorías y el porcentaje de alcohol, así como variables cualitativas relacionadas con el tipo de cerveza y su lugar de 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/angelicagonzalez/Downloads/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. 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 |
De acuerdo con los resultados de la muestra, el precio promedio de las cervezas nacionales es superior al de las cervezas importadas. No obstante, esta diferencia debe interpretarse con precaución, ya que está condicionada por la composición de la muestra y las variedades de cerveza que fueron consideradas. Por lo tanto, no se puede concluir directamente que todas las cervezas nacionales tengan un precio más elevado.
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 <- read.csv("beer.csv", dec = ",")
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.0000000 0.4236851 0.2949747
## calorias 0.4236851 1.0000000 0.8826171
## poralcoh 0.2949747 0.8826171 1.0000000
cor(beer[, c("precio", "calorias", "poralcoh")])
## precio calorias poralcoh
## precio 1.0000000 0.4236851 0.2949747
## calorias 0.4236851 1.0000000 0.8826171
## poralcoh 0.2949747 0.8826171 1.0000000
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 la muestra predominan las cervezas importadas, con 54 de las 69 marcas analizadas. En cuanto a la clasificación por tipo de cerveza, la categoría con mayor presencia es la clara artesanal, seguida por la cerveza normal y la cerveza helada.
Respecto al precio, se obtiene una media de 4.96 y una mediana de 4.79. Estos valores muestran que el precio habitual se sitúa aproximadamente en 5 unidades monetarias por una caja de seis botellas. Además, los precios presentan una variabilidad moderada, reflejada en un coeficiente de variación del 29.1%.
En relación con las calorías, se registra una media de 142.35 y una mediana de 148. La distribución muestra un sesgo negativo, debido a la presencia de cervezas con un contenido calórico bastante bajo. Esta característica se evidencia principalmente en la categoría de cervezas bajas en calorías o sin alcohol.
El porcentaje de alcohol presenta una media de 4.42% y una mediana de 4.90%. Esta diferencia se debe principalmente a la inclusión de cervezas sin alcohol, las cuales reducen el valor promedio. Por esta razón, la mediana puede ser un indicador más representativo del consumo típico que la media.
La relación más evidente se encuentra entre el contenido de alcohol y las calorías, ya que se observa una tendencia a que las calorías aumenten conforme se incrementa el porcentaje de alcohol. Aunque este comportamiento es coherente con las características del producto, debe entenderse únicamente como una asociación descriptiva y no como una relación de causalidad.
A partir del análisis descriptivo inicial, la base de datos permite organizar las cervezas según su tipo y procedencia, además de establecer comparaciones entre sus precios, contenido calórico y porcentaje de alcohol. Como punto de partida para profundizar en el análisis, se propone enfocarse en tres cruces principales:
La recomendación principal es no quedarse solo con promedios generales. Como la muestra mezcla cervezas artesanales, importadas, normales y sin alcohol, el análisis por grupos es más claro y evita conclusiones engañosas.