Cargar datos

library(readr)
beer2 <- read_csv("data/beer2.csv")
## Rows: 1586614 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (5): marca, nacionalidad, nombre_cerveza, tipo, origen
## dbl (10): id, precio, alcohol, carbohidratos, calorias, calificacion, aroma,...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

base de datos

library(DT)
# Cargar los datos
library(readr)
beer2 <- read_csv("data/beer2.csv")
## Rows: 1586614 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (5): marca, nacionalidad, nombre_cerveza, tipo, origen
## dbl (10): id, precio, alcohol, carbohidratos, calorias, calificacion, aroma,...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Mostrar la tabla con DataTable
DT::datatable(
  head(beer2),
  fillContainer = FALSE,
  options = list(pageLength = 8)
)

Análisis de variables cualitativas y ordinales

library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Tabla de frecuencias: tipo de cerveza
tabla_tipo <- beer2 %>%
  count(tipo, name = "Frecuencia") %>%
  mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
  arrange(desc(Frecuencia))
tabla_tipo
## # A tibble: 5 × 3
##   tipo                           Frecuencia `Frecuencia relativa`
##   <chr>                               <int>                 <dbl>
## 1 cerveza normal y helada            839088                0.529 
## 2 clara artesanal                    483464                0.305 
## 3 lager importada                    219194                0.138 
## 4 lager artesanal                     22725                0.0143
## 5 baja en calorías / sin alcohol      22143                0.014
# Tabla de frecuencias: origen (nacional vs importada)
tabla_origen <- beer2 %>%
  count(origen, name = "Frecuencia") %>%
  mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
  arrange(desc(Frecuencia))
tabla_origen
## # A tibble: 2 × 3
##   origen    Frecuencia `Frecuencia relativa`
##   <chr>          <int>                 <dbl>
## 1 importada    1412449                 0.890
## 2 nacional      174165                 0.110
# Tabla de frecuencias: nacionalidad
tabla_nacionalidad <- beer2 %>%
  count(nacionalidad, name = "Frecuencia") %>%
  mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
  arrange(desc(Frecuencia))
tabla_nacionalidad
## # A tibble: 10 × 3
##    nacionalidad    Frecuencia `Frecuencia relativa`
##    <chr>                <int>                 <dbl>
##  1 Austria             201941                0.127 
##  2 Bélgica             188677                0.119 
##  3 Francia             181574                0.114 
##  4 Estados Unidos      174165                0.110 
##  5 Inglaterra          162644                0.102 
##  6 Canadá              159508                0.100 
##  7 Japón               155273                0.0979
##  8 Alemania            121684                0.0767
##  9 Irlanda             120742                0.0761
## 10 República Checa     120406                0.0759
# Tabla de frecuencias: calificación (variable ordinal)
tabla_calificacion <- beer2 %>%
  count(calificacion, name = "Frecuencia") %>%
  mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
  arrange(calificacion)
tabla_calificacion
## # A tibble: 10 × 3
##    calificacion Frecuencia `Frecuencia relativa`
##           <dbl>      <int>                 <dbl>
##  1          0            7                0     
##  2          1        10954                0.0069
##  3          1.5      12975                0.0082
##  4          2        38225                0.0241
##  5          2.5      58523                0.0369
##  6          3       165644                0.104 
##  7          3.5     301817                0.190 
##  8          4       582764                0.367 
##  9          4.5     324385                0.204 
## 10          5        91320                0.0576

Indicadores de variables cuantitativas

library(summarytools)
library(dplyr)

indicadores_cuantitativos <- beer2 %>%
  select(precio, alcohol, carbohidratos, calorias) %>%
  descr()

indicadores_cuantitativos
## Descriptive Statistics  
## beer2  
## N: 1586614  
## 
##                        alcohol     calorias   carbohidratos       precio
## ----------------- ------------ ------------ --------------- ------------
##              Mean        18.71       193.17           14.05         5.36
##           Std.Dev         5.46        46.57            2.38         0.65
##               Min         0.03        21.00            3.50         2.20
##                Q1        14.28       157.00           12.40         4.98
##            Median        17.67       182.00           13.80         5.41
##                Q3        22.63       224.00           15.60         5.82
##               Max        59.45       541.00           30.20         8.03
##               MAD         5.56        43.00            2.37         0.62
##               IQR         8.35        67.00            3.20         0.84
##                CV         0.29         0.24            0.17         0.12
##          Skewness         0.96         0.92            0.46        -0.47
##       SE.Skewness         0.00         0.00            0.00         0.00
##          Kurtosis         1.31         1.32            0.87         0.36
##           N.Valid   1586614.00   1586614.00      1586614.00   1586614.00
##                 N   1586614.00   1586614.00      1586614.00   1586614.00
##         Pct.Valid       100.00       100.00          100.00       100.00

Comparación por tipo y origen de cerveza

library(dplyr)

# Comparación por tipo de cerveza
comparacion_tipo <- beer2 %>%
  group_by(tipo) %>%
  summarise(
    precio_media = round(mean(precio), 2),
    precio_mediana = round(median(precio), 2),
    alcohol_media = round(mean(alcohol), 2),
    alcohol_mediana = round(median(alcohol), 2),
    carbohidratos_media = round(mean(carbohidratos), 2),
    calorias_media = round(mean(calorias), 2),
    calorias_mediana = round(median(calorias), 2)
  )
comparacion_tipo
## # A tibble: 5 × 8
##   tipo                 precio_media precio_mediana alcohol_media alcohol_mediana
##   <chr>                       <dbl>          <dbl>         <dbl>           <dbl>
## 1 baja en calorías / …         4.28           4.25          9.84            11.1
## 2 cerveza normal y he…         5.27           5.34         20.1             18.9
## 3 clara artesanal              5.7            5.78         18.2             17.4
## 4 lager artesanal              4.55           4.54         15.7             13.8
## 5 lager importada              5.17           5.24         15.9             14.3
## # ℹ 3 more variables: carbohidratos_media <dbl>, calorias_media <dbl>,
## #   calorias_mediana <dbl>
# Comparación por origen (nacional vs importada)
comparacion_origen <- beer2 %>%
  group_by(origen) %>%
  summarise(
    precio_media = round(mean(precio), 2),
    precio_mediana = round(median(precio), 2),
    alcohol_media = round(mean(alcohol), 2),
    alcohol_mediana = round(median(alcohol), 2),
    carbohidratos_media = round(mean(carbohidratos), 2),
    calorias_media = round(mean(calorias), 2),
    calorias_mediana = round(median(calorias), 2)
  )
comparacion_origen
## # A tibble: 2 × 8
##   origen    precio_media precio_mediana alcohol_media alcohol_mediana
##   <chr>            <dbl>          <dbl>         <dbl>           <dbl>
## 1 importada         5.46           5.5           18.7            17.4
## 2 nacional          4.54           4.54          18.7            17.9
## # ℹ 3 more variables: carbohidratos_media <dbl>, calorias_media <dbl>,
## #   calorias_mediana <dbl>
tabla_tipo %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
##   tipo                    Frecuencia `Frecuencia relativa`
##   <chr>                        <int>                 <dbl>
## 1 cerveza normal y helada     839088                 0.529
tabla_origen %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
##   origen    Frecuencia `Frecuencia relativa`
##   <chr>          <int>                 <dbl>
## 1 importada    1412449                 0.890
tabla_nacionalidad %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
##   nacionalidad Frecuencia `Frecuencia relativa`
##   <chr>             <int>                 <dbl>
## 1 Austria          201941                 0.127
tabla_calificacion %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
##   calificacion Frecuencia `Frecuencia relativa`
##          <dbl>      <int>                 <dbl>
## 1            4     582764                 0.367

## Interpretación de resultados

#Al comparar por tipo de cerveza, se observan diferencias notables: las cervezas clasificadas como “clara artesanal” presentan el precio promedio más alto ($5.70), seguidas de “cerveza normal y helada” ($5.27), mientras que las “bajas en calorías / sin alcohol” tienen el precio más bajo ($4.28). En cuanto al contenido de alcohol, como es de esperar, la categoría “baja en calorías / sin alcohol” presenta el valor más bajo (9.84 g), muy por debajo de las demás, mientras que las cervezas “normales y heladas” registran el mayor contenido de alcohol (20.10 g). Esto sugiere que el tipo de cerveza está más asociado con diferencias en el contenido de alcohol que en el precio, y que los tipos artesanales (clara y lager artesanal) se posicionan con precios distintos entre sí, lo que podría reflejar estrategias de mercado diferenciadas.