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?
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.
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.
| 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 |
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
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
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
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
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
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")
Se trabaja con nivel de significancia de \(lpha=0.05\).
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.
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.
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.
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.
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.
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.
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.
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.