1 Introducción

El director de investigación solicita una primera etapa de análisis descriptivo sobre una base de datos que recoge cinco características de 69 marcas de cerveza distribuidas en la ciudad: precio, calorías, porcentaje de alcohol, tipo de cerveza y origen (nacional/importada). El objetivo de este informe es resumir la información en tablas e indicadores estadísticos que permitan validar hipótesis iniciales sobre las diferencias entre tipos de cerveza y su origen.

2 Importación y preparación de los datos

# Si el archivo no está en la carpeta del proyecto, descomente y ajuste la ruta:
# setwd("C:/Users/SuUsuario/OneDrive/Documentos/Caso1")

datos <- read.csv("beer.csv", sep = ",", stringsAsFactors = FALSE)

# Las variables numéricas vienen con coma decimal (formato en español) y
# fueron leídas como texto entre comillas; se convierten a numérico:
datos$precio   <- as.numeric(gsub(",", ".", datos$precio))
datos$poralcoh <- as.numeric(gsub(",", ".", datos$poralcoh))
datos$calorias <- as.numeric(datos$calorias)

# Se etiquetan las variables categóricas según el diccionario del caso
datos$tipo <- factor(datos$tipo,
                      levels = 1:5,
                      labels = c("Lager artesanal", "Clara artesanal",
                                 "Lager importada", "Normal y helada",
                                 "Baja en calorías y sin alcohol"))

datos$origen <- factor(datos$origen,
                        levels = c(0, 1),
                        labels = c("Nacional", "Importada"))

str(datos)
## 'data.frame':    69 obs. of  6 variables:
##  $ marca   : chr  "m1" "m2" "m3" "m4" ...
##  $ precio  : num  6.24 4.79 5.96 4.7 4.11 3.85 2.52 5.46 6 3.71 ...
##  $ calorias: num  159 160 160 162 157 151 155 135 162 142 ...
##  $ poralcoh: num  5.2 5 4.9 4.9 5.5 4.9 4.7 5.1 5.4 4.8 ...
##  $ 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 ...
kable(head(datos, 10), caption = "Primeras 10 observaciones de la base de datos") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Primeras 10 observaciones de la base de datos
marca precio calorias poralcoh tipo origen
m1 6.24 159 5.2 Lager artesanal Importada
m2 4.79 160 5.0 Lager artesanal Importada
m3 5.96 160 4.9 Lager artesanal Importada
m4 4.70 162 4.9 Lager artesanal Importada
m5 4.11 157 5.5 Lager artesanal Importada
m6 3.85 151 4.9 Lager artesanal Importada
m7 2.52 155 4.7 Lager artesanal Importada
m8 5.46 135 5.1 Lager artesanal Importada
m9 6.00 162 5.4 Lager artesanal Importada
m10 3.71 142 4.8 Lager artesanal Importada

La base contiene 69 marcas de cerveza y 6 variables.

3 Análisis descriptivo de las variables cuantitativas

Las variables cuantitativas del estudio son precio, calorías y porcentaje de alcohol. A continuación se presenta una tabla resumen con los principales indicadores de tendencia central, dispersión y forma.

resumen_cuant <- describe(datos[, c("precio", "calorias", "poralcoh")])[, c("n","mean","sd","median","min","max","range","skew","kurtosis")]

kable(round(resumen_cuant, 2),
      caption = "Estadísticos descriptivos - Precio, Calorías y % de alcohol") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Estadísticos descriptivos - Precio, Calorías y % de alcohol
n mean sd median min max range skew kurtosis
precio 69 4.96 1.45 4.79 2.36 7.8 5.44 0.11 -1.11
calorias 69 142.35 29.90 148.00 58.00 201.0 143.00 -1.25 1.18
poralcoh 69 4.42 1.57 4.90 0.00 6.0 6.00 -2.12 3.39
cv <- sapply(datos[, c("precio","calorias","poralcoh")], function(x) sd(x)/mean(x)*100)
tabla_cv <- data.frame(Variable = names(cv), CV_porcentaje = round(as.numeric(cv), 2))
kable(tabla_cv,
      caption = "Coeficiente de variación (%)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Coeficiente de variación (%)
Variable CV_porcentaje
precio 29.14
calorias 21.01
poralcoh 35.63

3.1 Visualización de las variables cuantitativas

p1 <- ggplot(datos, aes(x = precio)) +
  geom_histogram(bins = 10, fill = "#7B4B2A", color = "white") +
  labs(title = "Distribución del precio", x = "Precio (USD)", y = "Frecuencia") +
  theme_minimal()

p2 <- ggplot(datos, aes(x = calorias)) +
  geom_histogram(bins = 10, fill = "#C9A66B", color = "white") +
  labs(title = "Distribución de calorías", x = "Calorías", y = "Frecuencia") +
  theme_minimal()

p3 <- ggplot(datos, aes(x = poralcoh)) +
  geom_histogram(bins = 10, fill = "#4B6043", color = "white") +
  labs(title = "Distribución del % de alcohol", x = "% Alcohol", y = "Frecuencia") +
  theme_minimal()

gridExtra::grid.arrange(p1, p2, p3, ncol = 3)

b1 <- ggplot(datos, aes(x = tipo, y = precio, fill = tipo)) +
  geom_boxplot(show.legend = FALSE) +
  labs(title = "Precio por tipo de cerveza", x = "", y = "Precio") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 35, hjust = 1))

b1

4 Análisis descriptivo de las variables cualitativas

Las variables cualitativas son tipo de cerveza y origen.

tabla_tipo <- datos %>%
  count(tipo) %>%
  mutate(Porcentaje = round(n / sum(n) * 100, 1))

kable(tabla_tipo, col.names = c("Tipo de cerveza", "Frecuencia", "Porcentaje (%)"),
      caption = "Distribución de frecuencias - Tipo de cerveza") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Distribución de frecuencias - Tipo de cerveza
Tipo de cerveza Frecuencia Porcentaje (%)
Lager artesanal 13 18.8
Clara artesanal 17 24.6
Lager importada 10 14.5
Normal y helada 16 23.2
Baja en calorías y sin alcohol 13 18.8
tabla_origen <- datos %>%
  count(origen) %>%
  mutate(Porcentaje = round(n / sum(n) * 100, 1))

kable(tabla_origen, col.names = c("Origen", "Frecuencia", "Porcentaje (%)"),
      caption = "Distribución de frecuencias - Origen") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Distribución de frecuencias - Origen
Origen Frecuencia Porcentaje (%)
Nacional 15 21.7
Importada 54 78.3
g1 <- ggplot(tabla_tipo, aes(x = reorder(tipo, -n), y = n, fill = tipo)) +
  geom_col(show.legend = FALSE) +
  labs(title = "Marcas por tipo de cerveza", x = "", y = "Número de marcas") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 30, hjust = 1))

g2 <- ggplot(tabla_origen, aes(x = origen, y = n, fill = origen)) +
  geom_col(show.legend = FALSE) +
  labs(title = "Marcas por origen", x = "", y = "Número de marcas") +
  theme_minimal()

gridExtra::grid.arrange(g1, g2, ncol = 2)

4.1 Tabla cruzada: tipo de cerveza vs. origen

tabla_cruzada <- table(datos$tipo, datos$origen)
kable(tabla_cruzada, caption = "Tipo de cerveza según origen") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Tipo de cerveza según origen
Nacional Importada
Lager artesanal 0 13
Clara artesanal 1 16
Lager importada 10 0
Normal y helada 1 15
Baja en calorías y sin alcohol 3 10

5 Comparación de indicadores según origen (nacional vs. importada)

resumen_origen <- datos %>%
  group_by(origen) %>%
  summarise(
    Precio_promedio   = round(mean(precio), 2),
    Calorias_promedio = round(mean(calorias), 2),
    Alcohol_promedio  = round(mean(poralcoh), 2),
    n = n()
  )

kable(resumen_origen,
      col.names = c("Origen", "Precio promedio", "Calorías promedio", "% Alcohol promedio", "N° marcas"),
      caption = "Promedios de precio, calorías y alcohol según origen") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Promedios de precio, calorías y alcohol según origen
Origen Precio promedio Calorías promedio % Alcohol promedio N° marcas
Nacional 5.86 138.60 4.13 15
Importada 4.71 143.39 4.50 54

6 Análisis de resultados

  • Precio: El precio promedio de las 69 marcas es de USD 4.96 por caja de seis botellas de 12 onzas, con una desviación estándar de 1.45 y un coeficiente de variación de 29.1%, lo que refleja una dispersión moderada-alta: no todas las marcas se agrupan cerca del promedio, sino que coexisten opciones económicas y premium. En el boxplot general no se observan marcas atípicas para el conjunto completo de datos, pero al segmentar por tipo de cerveza sí aparecen algunos valores atípicos puntuales: dentro de la categoría “baja en calorías y sin alcohol” hay tres marcas (m62, m68 y m69) con precios notablemente más altos que el resto de su grupo (entre USD 5.42 y 6.49, cuando la mayoría de esa categoría se ubica alrededor de USD 3-4); y dentro de “lager importada” la marca m40 (USD 7.80) se comporta como un valor atípico por ser la más cara de su categoría.
  • Calorías: El contenido calórico promedio general es de 142.3 calorías, pero varía claramente según el tipo: “clara artesanal” es la más calórica (165.4 cal en promedio), seguida de “lager artesanal” (154.4 cal) y “lager importada” (151.2 cal). Las cervezas “baja en calorías y sin alcohol” (tipo 5) sí presentan, en efecto, el valor promedio más bajo de todos, con 89.2 calorías, muy por debajo de las demás categorías, lo que confirma que esta clasificación cumple con su nombre.
  • Porcentaje de alcohol: El promedio general es 4.42%, pero nuevamente el tipo 5 se distingue del resto: su contenido de alcohol promedio es de solo 1.92%, muy inferior al de las otras categorías (que oscilan entre 4.77% y 5.28%). Al revisar el detalle, 7 de las 13 marcas clasificadas como “baja en calorías y sin alcohol” tienen efectivamente 0% de alcohol, lo que respalda en gran medida la definición del grupo, aunque no de forma perfecta (las 6 marcas restantes de esa categoría sí registran algo de alcohol).
  • Tipo de cerveza: La categoría con mayor número de marcas es “clara artesanal”, con 17 marcas, equivalentes al 24.6% del total de 69 marcas analizadas. Le sigue de cerca “normal y helada” con 16 marcas (23.2%).
  • Origen: De las 69 marcas, 54 son importadas (78.3%) y solo 15 son nacionales (21.7%), es decir, casi 4 de cada 5 marcas distribuidas en la ciudad son importadas. Sin embargo, al comparar los promedios, son las marcas nacionales las que presentan el precio más alto (USD 5.86 frente a USD 4.71 de las importadas), un contenido calórico ligeramente mayor (138.6 vs 143.4, prácticamente similar) y un porcentaje de alcohol algo menor (4.13% vs 4.50%). Esto no confirma la hipótesis habitual de que “lo importado es más costoso”; en esta base ocurre justamente lo contrario.

7 Conclusiones

-Precio: promedio USD 4.96, dispersión moderada-alta (CV 29%). Rango: USD 2.36 – 7.80. Calorías: promedio 142.3 cal, la variable más homogénea (CV 21%). % Alcohol: promedio 4.42%, la más dispersa (CV 36%), por las cervezas tipo 5 (0% alcohol). Tipo: “clara artesanal” es la más común (24.6%) y también la más cara y calórica; “baja en calorías y sin alcohol” tiene, lógicamente, los valores más bajos en calorías y alcohol. Origen: 78% importadas, 22% nacionales. Sorpresa: las nacionales resultan más caras en promedio (USD 5.86 vs 4.71), contrario a lo esperado. Hallazgo curioso: el tipo “lager importada” está codificado como origen “nacional” en los datos — son variables independientes, no hay que confundirlas. Conclusión general: hay diferencias claras entre tipos de cerveza, pero la hipótesis de que “importado = más caro” no se sostiene. Se recomienda seguir con pruebas estadísticas para confirmar significancia.