Título e información general

Curso: Estadística Inferencial
Integrantes:
- José Castro Zúñiga Alejandro Cotes Fornaris Juanmanuelle Rodriguez Ospina
Fecha de entrega: miércoles 20 de mayo de 2026
Base de datos: Impuesto a bebidas azucaradas
Variable principal: gasto_bebidas_despues
Pregunta problema: ¿Qué factores sociales, económicos y de salud se asocian con el gasto mensual en bebidas azucaradas después de la implementación del impuesto en Colombia?

Planteamiento del problema

Objetivo general

Analizar, mediante técnicas de estadística inferencial, qué factores sociales, económicos y de salud se asocian con el gasto mensual en bebidas azucaradas después de la implementación del impuesto en Colombia.

Objetivos específicos

  • Estimar intervalos de confianza para la media poblacional del nivel de conciencia sobre salud y del gasto mensual en bebidas antes del impuesto.
  • Comparar el gasto mensual en bebidas azucaradas antes y después del impuesto.
  • Evaluar si el gasto posterior al impuesto difiere según sexo, diagnóstico de diabetes y realización de actividad física.
  • Modelar la asociación entre la frecuencia anual de consumo de comida rápida y el gasto mensual en bebidas azucaradas después del impuesto.

Justificación

El impuesto a bebidas azucaradas es una medida de salud pública orientada a modificar patrones de consumo asociados con riesgos metabólicos. En Colombia, estudios previos han planteado que un impuesto a bebidas azucaradas puede reducir prevalencias de sobrepeso y obesidad, especialmente en hogares de menor nivel socioeconómico. También se ha proyectado que un impuesto del 20% podría disminuir el consumo y generar recursos fiscales para salud pública. Por ello, analizar datos de consumo permite aportar evidencia para decisiones de política pública y educación nutricional.

Análisis exploratorio de datos (EDA)

Clasificación de variables

Variable Naturaleza Nivel de medición
edad Cuantitativa discreta Razón
sexo Cualitativa Nominal
estrato Cualitativa ordinal / numérica ordinal Ordinal
ingreso_mensual Cuantitativa continua Razón
gasto_bebidas_antes Cuantitativa continua Razón
gasto_bebidas_despues Cuantitativa continua Razón
frecuencia_consumo_bebidas Cualitativa ordinal Ordinal
realiza_actividad_fisica Cualitativa Nominal dicotómica
diagnostico_diabetes Cualitativa Nominal dicotómica
presion_alta Cualitativa Nominal dicotómica
nivel_conciencia_salud Ordinal tratada como cuantitativa Ordinal
ha_cambiado_habito Cualitativa Nominal dicotómica
frecuencia_comida_rapida Cuantitativa continua Razón

Cargar base de datos

datos <- read.csv("base_bebidas_azucaradas_.csv")
str(datos)
## 'data.frame':    378 obs. of  17 variables:
##  $ edad                      : int  53 66 43 29 57 22 35 72 33 37 ...
##  $ sexo                      : chr  "Femenino" "Femenino" "Femenino" "Masculino" ...
##  $ estrato                   : int  3 1 2 2 3 3 2 3 1 2 ...
##  $ ingreso_mensual           : num  1557312 1029382 2103256 1135667 827640 ...
##  $ gasto_bebidas_antes       : int  114059 53719 132084 161231 70832 101930 172781 137290 129671 57313 ...
##  $ gasto_bebidas_despues     : int  138995 74760 99164 103625 117671 126783 98090 114295 89175 103880 ...
##  $ consume_bebidas_azucaradas: chr  "Si" "Si" "Si" "Si" ...
##  $ frecuencia_consumo_bebidas: chr  "Nunca" "Ocasional" "Frecuente" "Ocasional" ...
##  $ preferencia_bebidas       : chr  "Te azucarado" "Jugos industriales" "Gaseosa" "Jugos industriales" ...
##  $ nivel_conciencia_salud    : int  10 3 9 4 3 2 10 4 3 7 ...
##  $ realiza_actividad_fisica  : chr  "Si" "Si" "Si" "Si" ...
##  $ imc                       : num  26.1 24.5 29 39.8 NA ...
##  $ diagnostico_diabetes      : chr  "No" "No" "No" "No" ...
##  $ presion_alta              : chr  "No" "No" "No" "No" ...
##  $ percepcion_impuesto       : chr  "Negativa" "Negativa" "Negativa" "Positiva" ...
##  $ ha_cambiado_habito        : chr  "Si" "No" "Si" "Si" ...
##  $ frecuencia_comida_rapida  : num  137.8 80.2 140.3 115 130.3 ...
dim(datos)
## [1] 378  17
head(datos)
##   edad      sexo estrato ingreso_mensual gasto_bebidas_antes
## 1   53  Femenino       3         1557312              114059
## 2   66  Femenino       1         1029382               53719
## 3   43  Femenino       2         2103256              132084
## 4   29 Masculino       2         1135667              161231
## 5   57 Masculino       3          827640               70832
## 6   22 Masculino       3         1909214              101930
##   gasto_bebidas_despues consume_bebidas_azucaradas frecuencia_consumo_bebidas
## 1                138995                         Si                      Nunca
## 2                 74760                         Si                  Ocasional
## 3                 99164                         Si                  Frecuente
## 4                103625                         Si                  Ocasional
## 5                117671                         Si                  Ocasional
## 6                126783                         Si                  Ocasional
##   preferencia_bebidas nivel_conciencia_salud realiza_actividad_fisica      imc
## 1        Te azucarado                     10                       Si 26.12429
## 2  Jugos industriales                      3                       Si 24.49773
## 3             Gaseosa                      9                       Si 29.04204
## 4  Jugos industriales                      4                       Si 39.82990
## 5        Te azucarado                      3                       No       NA
## 6        Energizantes                      2                       Si 21.79144
##   diagnostico_diabetes presion_alta percepcion_impuesto ha_cambiado_habito
## 1                   No           No            Negativa                 Si
## 2                   No           No            Negativa                 No
## 3                   No           No            Negativa                 Si
## 4                   No           No            Positiva                 Si
## 5                   No           No            Positiva                 Si
## 6                   No           Si            Negativa                 Si
##   frecuencia_comida_rapida
## 1                    137.8
## 2                     80.2
## 3                    140.3
## 4                    115.0
## 5                    130.3
## 6                    171.1

Revisión de valores faltantes

colSums(is.na(datos))
##                       edad                       sexo 
##                          0                          0 
##                    estrato            ingreso_mensual 
##                          0                         18 
##        gasto_bebidas_antes      gasto_bebidas_despues 
##                          0                          0 
## consume_bebidas_azucaradas frecuencia_consumo_bebidas 
##                          0                          0 
##        preferencia_bebidas     nivel_conciencia_salud 
##                          0                          0 
##   realiza_actividad_fisica                        imc 
##                          0                         14 
##       diagnostico_diabetes               presion_alta 
##                          0                          0 
##        percepcion_impuesto         ha_cambiado_habito 
##                          0                          0 
##   frecuencia_comida_rapida 
##                          0

Revisión de datos atípicos

variables_numericas <- datos %>% select(where(is.numeric))
resumen_atipicos <- data.frame(
  variable = names(variables_numericas),
  atipicos = sapply(variables_numericas, function(x) {
    q1 <- quantile(x, 0.25, na.rm = TRUE)
    q3 <- quantile(x, 0.75, na.rm = TRUE)
    iqr <- q3 - q1
    sum(x < q1 - 1.5*iqr | x > q3 + 1.5*iqr, na.rm = TRUE)
  })
)
resumen_atipicos
##                                          variable atipicos
## edad                                         edad        0
## estrato                                   estrato       31
## ingreso_mensual                   ingreso_mensual        1
## gasto_bebidas_antes           gasto_bebidas_antes        3
## gasto_bebidas_despues       gasto_bebidas_despues        0
## nivel_conciencia_salud     nivel_conciencia_salud        0
## imc                                           imc        0
## frecuencia_comida_rapida frecuencia_comida_rapida        0

Estadísticos descriptivos para variables numéricas

datos %>%
  summarise(across(where(is.numeric),
                   list(media = mean, mediana = median, sd = sd, minimo = min, maximo = max),
                   na.rm = TRUE))
##   edad_media edad_mediana  edad_sd edad_minimo edad_maximo estrato_media
## 1   44.70106           46 17.76036          15          74      2.597884
##   estrato_mediana estrato_sd estrato_minimo estrato_maximo
## 1               3   1.206611              1              6
##   ingreso_mensual_media ingreso_mensual_mediana ingreso_mensual_sd
## 1               1236312                 1224921           690879.6
##   ingreso_mensual_minimo ingreso_mensual_maximo gasto_bebidas_antes_media
## 1                  2e+05                3550202                  101765.9
##   gasto_bebidas_antes_mediana gasto_bebidas_antes_sd gasto_bebidas_antes_minimo
## 1                      104078               46829.57                       5000
##   gasto_bebidas_antes_maximo gasto_bebidas_despues_media
## 1                     236543                    101765.9
##   gasto_bebidas_despues_mediana gasto_bebidas_despues_sd
## 1                        100200                 23352.01
##   gasto_bebidas_despues_minimo gasto_bebidas_despues_maximo
## 1                        56398                       146435
##   nivel_conciencia_salud_media nivel_conciencia_salud_mediana
## 1                     5.521164                              6
##   nivel_conciencia_salud_sd nivel_conciencia_salud_minimo
## 1                  2.844479                             1
##   nivel_conciencia_salud_maximo imc_media imc_mediana  imc_sd imc_minimo
## 1                            10  26.15831    26.19726 5.07182   12.79551
##   imc_maximo frecuencia_comida_rapida_media frecuencia_comida_rapida_mediana
## 1    39.8299                       112.3717                           114.25
##   frecuencia_comida_rapida_sd frecuencia_comida_rapida_minimo
## 1                    31.17401                            39.5
##   frecuencia_comida_rapida_maximo
## 1                           181.4

Tablas de frecuencias y contingencia

table(datos$sexo)
## 
##  Femenino Masculino 
##       195       183
prop.table(table(datos$sexo))
## 
##  Femenino Masculino 
##  0.515873  0.484127
table(datos$frecuencia_consumo_bebidas)
## 
##    Diario Frecuente     Nunca Ocasional 
##        50       134        38       156
prop.table(table(datos$frecuencia_consumo_bebidas))
## 
##    Diario Frecuente     Nunca Ocasional 
## 0.1322751 0.3544974 0.1005291 0.4126984
table(datos$realiza_actividad_fisica)
## 
##  No  Si 
## 145 233
prop.table(table(datos$realiza_actividad_fisica))
## 
##        No        Si 
## 0.3835979 0.6164021
table(datos$diagnostico_diabetes)
## 
##  No  Si 
## 324  54
prop.table(table(datos$diagnostico_diabetes))
## 
##        No        Si 
## 0.8571429 0.1428571
table(datos$sexo, datos$ha_cambiado_habito)
##            
##              No  Si
##   Femenino   19 176
##   Masculino  18 165

Gráficos descriptivos

ggplot(datos, aes(x = gasto_bebidas_despues)) +
  geom_histogram(bins = 20, color = "black", fill = "skyblue") +
  labs(title = "Distribución del gasto después del impuesto", x = "Gasto mensual después", y = "Frecuencia")

datos_largos <- tidyr::pivot_longer(datos, cols = c(gasto_bebidas_antes, gasto_bebidas_despues), names_to = "momento", values_to = "gasto")
ggplot(datos_largos, aes(x = momento, y = gasto)) +
  geom_boxplot(fill = "lightgreen") +
  labs(title = "Gasto antes y después del impuesto", x = "Momento", y = "Gasto mensual")

ggplot(datos, aes(x = sexo, y = gasto_bebidas_despues)) +
  geom_boxplot(fill = "orange") +
  labs(title = "Gasto después del impuesto según sexo", x = "Sexo", y = "Gasto mensual después")

ggplot(datos, aes(x = frecuencia_consumo_bebidas)) +
  geom_bar(fill = "purple") +
  labs(title = "Frecuencia de consumo de bebidas", x = "Categoría", y = "Frecuencia")

ggplot(datos, aes(x = frecuencia_comida_rapida, y = gasto_bebidas_despues)) +
  geom_point(alpha = 0.6) +
  geom_smooth(method = "lm", se = TRUE) +
  labs(title = "Comida rápida y gasto en bebidas", x = "Frecuencia de comida rápida al año", y = "Gasto después")

ggplot(datos, aes(x = realiza_actividad_fisica, y = gasto_bebidas_despues)) +
  geom_boxplot(fill = "lightgray") +
  labs(title = "Gasto después según actividad física", x = "Realiza actividad física", y = "Gasto mensual después")

Pruebas de hipótesis e inferencia estadística

Se trabaja con nivel de significancia de \(lpha=0.05\).

Intervalos de confianza

t.test(datos$nivel_conciencia_salud, conf.level = 0.95)$conf.int
## [1] 5.233489 5.808839
## attr(,"conf.level")
## [1] 0.95
t.test(datos$gasto_bebidas_antes, conf.level = 0.95)$conf.int
## [1]  97029.84 106502.00
## attr(,"conf.level")
## [1] 0.95

La media poblacional del nivel de conciencia sobre salud se estima entre 5.233 y 5.809 puntos. La media poblacional del gasto antes del impuesto se estima entre 97,030 y 106,502 COP.

Hipótesis 1: gasto antes vs. después

H0: \(\mu_{antes} = \mu_{despues}\)
H1: \(\mu_{antes} \neq \mu_{despues}\)

prueba_antes_despues <- t.test(datos$gasto_bebidas_antes, datos$gasto_bebidas_despues, paired = TRUE)
prueba_antes_despues
## 
##  Paired t-test
## 
## data:  datos$gasto_bebidas_antes and datos$gasto_bebidas_despues
## t = -9.6094e-07, df = 377, p-value = 1
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -5413.224  5413.219
## sample estimates:
## mean difference 
##    -0.002645503

Como el valor p es 0.999999, no se rechaza H0. No hay evidencia estadística de diferencia significativa entre el gasto antes y después del impuesto.

Hipótesis 2: gasto después según sexo

H0: las medias de gasto después son iguales según sexo.
H1: al menos una media difiere.

modelo_sexo <- aov(gasto_bebidas_despues ~ sexo, data = datos)
summary(modelo_sexo)
##              Df    Sum Sq   Mean Sq F value   Pr(>F)    
## sexo          1 1.476e+10 1.476e+10   29.07 1.23e-07 ***
## Residuals   376 1.908e+11 5.075e+08                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
aggregate(gasto_bebidas_despues ~ sexo, data = datos, mean)
##        sexo gasto_bebidas_despues
## 1  Femenino              95713.24
## 2 Masculino             108215.50

Como el valor p es 0.00000012, se rechaza H0. Hay evidencia de diferencias significativas en el gasto posterior según sexo.

Hipótesis 3: gasto después según diagnóstico de diabetes

H0: \(\mu_{diabetes} = \mu_{no\ diabetes}\)
H1: \(\mu_{diabetes} \neq \mu_{no\ diabetes}\)

prueba_diabetes <- t.test(gasto_bebidas_despues ~ diagnostico_diabetes, data = datos)
prueba_diabetes
## 
##  Welch Two Sample t-test
## 
## data:  gasto_bebidas_despues by diagnostico_diabetes
## t = 0.28941, df = 70.077, p-value = 0.7731
## alternative hypothesis: true difference in means between group No and group Si is not equal to 0
## 95 percent confidence interval:
##  -6055.049  8110.667
## sample estimates:
## mean in group No mean in group Si 
##         101912.8         100884.9

Como el valor p es 0.773121, no se rechaza H0. No hay evidencia suficiente de diferencia significativa según diagnóstico de diabetes.

Hipótesis 4: gasto después según actividad física

H0: \(\mu_{actividad} = \mu_{no\ actividad}\)
H1: \(\mu_{actividad} \neq \mu_{no\ actividad}\)

prueba_actividad <- t.test(gasto_bebidas_despues ~ realiza_actividad_fisica, data = datos)
prueba_actividad
## 
##  Welch Two Sample t-test
## 
## data:  gasto_bebidas_despues by realiza_actividad_fisica
## t = 1.1661, df = 306.5, p-value = 0.2445
## alternative hypothesis: true difference in means between group No and group Si is not equal to 0
## 95 percent confidence interval:
##  -1977.339  7729.610
## sample estimates:
## mean in group No mean in group Si 
##         103538.8         100662.6

Como el valor p es 0.244495, no se rechaza H0. No hay evidencia suficiente de diferencia significativa según realización de actividad física.

Regresión lineal simple

H0: \(eta_1 = 0\)
H1: \(eta_1 eq 0\)

modelo_regresion <- lm(gasto_bebidas_despues ~ frecuencia_comida_rapida, data = datos)
summary(modelo_regresion)
## 
## Call:
## lm(formula = gasto_bebidas_despues ~ frecuencia_comida_rapida, 
##     data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -40320  -8998   1229  10263  32233 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              35761.34    2795.55   12.79   <2e-16 ***
## frecuencia_comida_rapida   587.38      23.97   24.50   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14510 on 376 degrees of freedom
## Multiple R-squared:  0.6149, Adjusted R-squared:  0.6138 
## F-statistic: 600.2 on 1 and 376 DF,  p-value: < 2.2e-16
cor.test(datos$frecuencia_comida_rapida, datos$gasto_bebidas_despues)
## 
##  Pearson's product-moment correlation
## 
## data:  datos$frecuencia_comida_rapida and datos$gasto_bebidas_despues
## t = 24.5, df = 376, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7419399 0.8201270
## sample estimates:
##       cor 
## 0.7841254

La ecuación estimada es:

\[\widehat{gasto\_bebidas\_despues} = 35761.34 + 587.38(frecuencia\_comida\_rapida)\]

La pendiente es positiva y significativa. Por cada comida rápida adicional al año, el gasto mensual esperado en bebidas azucaradas después del impuesto aumenta aproximadamente en 587.38 COP. El modelo explica el 61.5% de la variabilidad del gasto posterior.

Resultados y conclusiones

  • La media poblacional del nivel de conciencia sobre salud se ubica aproximadamente entre 5.23 y 5.81 puntos.
  • La media poblacional del gasto mensual antes del impuesto se ubica aproximadamente entre 97,030 y 106,502 COP.
  • No se encontró diferencia significativa entre el gasto antes y después del impuesto.
  • El sexo sí se asocia con diferencias significativas en el gasto posterior.
  • El diagnóstico de diabetes y la actividad física no mostraron diferencias estadísticamente significativas.
  • La frecuencia de consumo de comida rápida presenta una asociación positiva y significativa con el gasto mensual en bebidas azucaradas después del impuesto.

Recomendación de política pública

El impuesto debería complementarse con estrategias de educación nutricional y campañas dirigidas a patrones de consumo poco saludables en conjunto, especialmente comida rápida y bebidas azucaradas. Dado que la regresión muestra una asociación fuerte entre comida rápida y gasto en bebidas, una intervención integral en puntos de venta, colegios, universidades y entornos laborales podría ser más efectiva que una estrategia centrada únicamente en el precio de las bebidas.

Respuesta final a la pregunta problema

En la muestra analizada, el gasto mensual en bebidas azucaradas después del impuesto se asocia principalmente con el sexo y con la frecuencia anual de consumo de comida rápida. En cambio, no se encontró evidencia estadística suficiente para afirmar diferencias por diagnóstico de diabetes o realización de actividad física.

Referencias

  • Vecino-Ortiz, A. I., & Arroyo-Ariza, D. (2018). A tax on sugar sweetened beverages in Colombia. Social Science & Medicine.
  • Caro, J. C., Ng, S. W., Taillie, L. S., & Popkin, B. M. (2017). Sugary drinks taxation, projected consumption and fiscal revenues in Colombia. PLOS ONE.
  • World Health Organization. Global report on the use of sugar-sweetened beverage taxes.