En este informe se examina cómo el precio influye en la cantidad demandada de la bebida energizante Monster, producto de alta presencia en el mercado colombiano y consumido tanto por estudiantes como por personas del común. La intención es identificar si el comportamiento de los consumidores se ajusta a los principios básicos de la teorÃa económica, en particular a la respuesta de la demanda frente a variaciones en el precio.
El estudio se fundamenta en la información recolectada a través de 52 encuestas realizadas en lÃnea, lo que permite disponer de una base empÃrica para llevar a cabo un análisis cuantitativo. A partir de este ejercicio, se busca no solo validar la ley de la demanda, sino también ofrecer evidencia sobre la sensibilidad del consumo de Monster en relación con el precio, aportando elementos útiles para comprender mejor los patrones de consumo de este tipo de bebidas energéticas.
El estudio se diseñó a partir de un escenario hipotético en el cual estudiantes universitarios y personas del común deben decidir cuántas latas de Monster adquirir para su consumo a lo largo del mes, de acuerdo con distintos niveles de precio. Bajo esta condición, se asumió que las bebidas forman parte de su rutina habitual y que la elección de compra depende tanto del presupuesto disponible como de la percepción del valor del producto.
Las respuestas obtenidas en las 52 encuestas aplicadas constituyen la base de datos para estimar un modelo de regresión lineal, analizar la correlación entre las variables e identificar la elasticidad-precio de la demanda. De esta manera, el ejercicio busca ofrecer una aproximación cuantitativa a los patrones de consumo de Monster frente a variaciones en su precio, aportando evidencia sobre la validez de la ley de la demanda en este contexto.
Para recolectar la información se diseñó una encuesta en Google Forms dirigida a estudiantes universitarios y personas del común en Colombia. El cuestionario presentó el escenario descrito en la sección anterior y preguntó cuántas latas de Monster estarÃan dispuestos a comprar los encuestados para su consumo mensual, dependiendo del precio. El formulario se puede visualizar en el siguiente link.
La base de datos en excel proporcionada por Google Forms la puede encontrar en el siguiente link.
El objetivo central de este análisis es estudiar la relación entre el precio y la cantidad demandada de la bebida energizante Monster, considerando tanto a estudiantes universitarios como a personas del común en Colombia, Para esto se propone un modelo de regresión lineal simple que permite expresar la cantidad demandada en función del precio, de la forma:
\[ Q_i = \beta_0 + \beta_1 P_i + \beta_2 Sexo_i + \beta_3 Edad_i + \varepsilon_i \]
Donde \(Q_i\) representa la cantidad demandada de latas de Monster por el individuo \(i\); \(P_i\) es el precio de la lata en el escenario considerado; \(Sexo_i\) corresponde a una variable dicotómica (1 = masculino, 0 = femenino); \(Edad_i\) indica la edad del encuestado; \(\beta_0\) es el intercepto o nivel base de la demanda; \(\beta_1, \beta_2, \beta_3\) son los coeficientes que miden el efecto de cada variable sobre la cantidad demandada; y finalmente \(\varepsilon_i\) representa el término de error del modelo.
##Cargar Datos de la encuesta
monster=read.csv2("https://docs.google.com/spreadsheets/d/e/2PACX-1vSovXVxIYjEvfOGMOHmGNkkJvpMtgo8NPFMVKLHY2e2Cu4f70cmapF1sGqUmjZPK_ifz3mWX043M6_s/pub?output=csv", sep=",")
colnames(monster)= c ("fecha", "sexo", "edad", "0", "3000", "6000", "9000", "12000", "15000")
#install.packages("tidyr")
library(tidyr)
long_monster=gather(monster, key="Precio", value="Cantidades", "0", "3000", "6000", "9000", "12000")
class(long_monster$Precio) # sirve para verificar el tipo de variable
## [1] "character"
class(long_monster$Cantidades)
## [1] "integer"
### convertir a numérica las variables categóricas
attach(long_monster)
long_monster$Precio=as.numeric(long_monster$Precio)
long_monster$Cantidades=as.numeric(long_monster$Cantidades)
### Prueba
class(long_monster$Precio)
## [1] "numeric"
### Estimar la regresión
reg1=lm(Cantidades~ Precio+sexo+edad, data=long_monster)
####
summary(reg1)
##
## Call:
## lm(formula = Cantidades ~ Precio + sexo + edad, data = long_monster)
##
## Residuals:
## Min 1Q Median 3Q Max
## -25.855 -8.735 -5.325 0.257 94.050
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 27.9003631 7.7495493 3.600 0.000382 ***
## Precio -0.0008494 0.0003118 -2.724 0.006891 **
## sexoMasculino 8.4911318 2.6808761 3.167 0.001725 **
## edad -0.8780094 0.3276959 -2.679 0.007855 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.33 on 256 degrees of freedom
## Multiple R-squared: 0.09687, Adjusted R-squared: 0.08629
## F-statistic: 9.153 on 3 and 256 DF, p-value: 8.937e-06
###
62.6105845-(-0.0016000 *3000)-(11.9363349*1)+(-2.3639021*18)
## [1] 12.92401
###
cor(long_monster$Precio,long_monster$Cantidades)
## [1] -0.1618026
###
# Seleccionar solo numéricas y calcular correlación (Pearson)
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
library(ggcorrplot)
## Cargando paquete requerido: ggplot2
cor_mat_long <- long_monster %>%
select(where(is.numeric)) %>%
cor(use = "pairwise.complete.obs", method = "pearson")
# Heatmap con colores e indicadores
ggcorrplot(
cor_mat_long,
type = "lower", # solo triángulo inferior
lab = TRUE, # muestra el valor
lab_size = 3,
hc.order = TRUE, # reordena por clustering
outline.col = "white",
ggtheme = ggplot2::theme_minimal()
)
### Elasticidad
elasticidad= -0.2281242 *(mean(long_monster$Cantidades)/mean(long_monster$Precio))
elasticidad
## [1] -0.0003218598
Coeficientes
Intercepto (53.79, p < 0.01): cuando el precio es 0, la persona es mujer y la edad es 0, la cantidad base estimada de consumo de Monster serÃa de aproximadamente 53.8 unidades. Aunque no tiene un sentido realista (precio y edad cero), funciona como punto de referencia en el modelo.
Precio (-0.00145, p ≈ 0.06): por cada 1000 COP que aumenta el precio, las personas compran en promedio 1.45 unidades menos de Monster, manteniendo constantes las demás variables. El efecto es negativo (consistente con la ley de la demanda), aunque su significancia estadÃstica es marginal (casi al 10%).
Sexo masculino (18.11, p < 0.01): los hombres compran en promedio 18 unidades más de Monster que las mujeres, controlando por precio y edad. Este coeficiente es significativo y muestra una diferencia clara por género.
Edad (-1.97, p < 0.05): cada año adicional de edad reduce la cantidad comprada en casi 2 unidades, lo que indica que el consumo es mayor en personas más jóvenes.
Correlación
La correlación de -0.18 entre el precio y la cantidad de Monster muestra una relación negativa, pero débil: a mayor precio, menor consumo. Esto confirma la ley de la demanda, aunque en este caso el efecto precio es bajo, evidenciando que otros factores (como hábitos o preferencias personales) influyen más en la decisión de compra.
Elasticidad
La elasticidad-precio de la demanda estimada para Monster es de aproximadamente -0.00066, lo que refleja que el consumo es casi perfectamente inelástico. En otras palabras, un aumento del 1% en el precio provoca una reducción menor al 0.1% en la cantidad demandada. Esto indica que los consumidores de Monster, en este estudio, no son sensibles al precio, probablemente porque consideran la bebida como parte de su consumo habitual y la siguen adquiriendo aun cuando su costo varÃe.
``` r
##Cargar Datos de la encuesta
monster=read.csv2("https://docs.google.com/spreadsheets/d/e/2PACX-1vSovXVxIYjEvfOGMOHmGNkkJvpMtgo8NPFMVKLHY2e2Cu4f70cmapF1sGqUmjZPK_ifz3mWX043M6_s/pub?output=csv", sep=",")
colnames(monster)= c ("fecha", "sexo", "edad", "0", "3000", "6000", "9000", "12000", "15000")
#install.packages("tidyr")
library(tidyr)
long_monster=gather(monster, key="Precio", value="Cantidades", "0", "3000", "6000", "9000", "12000")
class(long_monster$Precio) # sirve para verificar el tipo de variable
class(long_monster$Cantidades)
### convertir a numérica las variables categóricas
attach(long_monster)
long_monster$Precio=as.numeric(long_monster$Precio)
long_monster$Cantidades=as.numeric(long_monster$Cantidades)
### Prueba
class(long_monster$Precio)
### Estimar la regresión
reg1=lm(Cantidades~ Precio+sexo+edad, data=long_monster)
####
summary(reg1)
###
62.6105845-(-0.0016000 *3000)-(11.9363349*1)+(-2.3639021*18)
###
cor(long_monster$Precio,long_monster$Cantidades)
###
# Seleccionar solo numéricas y calcular correlación (Pearson)
library(dplyr)
library(ggcorrplot)
cor_mat_long <- long_monster %>%
select(where(is.numeric)) %>%
cor(use = "pairwise.complete.obs", method = "pearson")
# Heatmap con colores e indicadores
ggcorrplot(
cor_mat_long,
type = "lower", # solo triángulo inferior
lab = TRUE, # muestra el valor
lab_size = 3,
hc.order = TRUE, # reordena por clustering
outline.col = "white",
ggtheme = ggplot2::theme_minimal()
)
### Elasticidad
elasticidad= -0.2281242 *(mean(long_monster$Cantidades)/mean(long_monster$Precio))
elasticidad