cafe <- read.csv("Cafe_Borinquen.csv")
cafe$fecha <- as.Date(cafe$fecha, format = "%m/%d/%Y")
cafe <- cafe %>% arrange(fecha)
ventas_ts <- ts(cafe$ventas,
start = c(2015, 1),
frequency = 12)
plot(ventas_ts,
xlab = "Año",
ylab = "Ventas (miles de dólares)",
main = "Ventas mensuales de Café Borinquen",
xaxt = "n")
axis(1,
at = seq(2015, 2025, by = 1))
Comportamiento
La gráfica muestra una tendencia creciente en las ventas a lo largo de los años, junto con un patrón estacional que se repite aproximadamente cada 12 meses. Las ventas tienden a ser más altas en los meses de verano y más bajas al inicio y al final de cada año. Sin embargo, en 2025 no se observa exactamente el mismo patrón que en los años anteriores, ya que las ventas son relativamente más bajas en comparación con los picos de años previos. Esta combinación de tendencia positiva y estacionalidad nos ayuda a pronosticar las ventas de los años siguientes.
descomp_cafe <- decompose(ventas_ts, type = "additive")
plot(descomp_cafe)
Descomposición
Tendencia - Se observa una tendencia positiva casi lineal. Las ventas aumentan de forma sostenida a lo largo de los años y se estabilizan ligeramente al acercarse a 2025.
Estacionalidead - Se identifica un patrón estacional anual con picos regulares hacia la mitad del año y valores más bajos al inicio de cada año
Residuales - La gráfica de los residuales muestra valores que se mueven alrededor de cero, sin tendencia ni patrón definido. Sin embargo, hacia finales del 2024 y en el 2025 se observa un cambio más marcado en los residuales, lo que refleja fluctuaciones irregulares.
monthplot(ventas_ts,
main = "Patrón estacional mensual de ventas",
ylab = "Ventas (miles)")
Estacionalidad
Los meses de mayo, junio y julio presentan los niveles de ventas más altos, mientras que de enero a marzo se observan los valores más bajos. Esto indica que Café Borinquen genera mayores ingresos en los meses de verano que puede planificar más personal e inventario para este periodo.
acf(ventas_ts,
lag.max = 12,
main = "ACF de ventas mensuales Café Borinquen")
Autocorrelación ACF
Observamos autocorrelaciones altas y positivas en los primeros rezagos, seguidos de una caída lenta. Lo que indica que las ventas de un mes están fuertemente relacionadas con las de meses anteriores.
pacf(ventas_ts,
lag.max = 12,
main = "PACF de ventas mensuales Café Borinquen")
Autocorrelación PACF
Se observa un pico fuerte y significativo en el primer rezago, mientras que los rezagos siguientes son mucho más pequeños y en su mayoría quedan cerca o dentro de las bandas de significancia. Esto indica que las ventas de un mes dependen principalmente del valor del mes anterior.
Resumen
La exploración visual muestra una tendencia creciente clara y una estacionalidad anual marcada, con meses de verano más fuertes y meses de inicio y final de año más débiles. Además, en los últimos meses del 2024 y todo el año de 2025 se observan algunas fluctuaciones irregulares que coinciden con las caídas y recuperaciones parciales descritas. Estos resultados confirman la necesidad de utilizar un modelo de series de tiempo con diferencias y componente estacional para producir pronósticos útiles para la planificación estratégica de Café Borinquen.
# Prueba de estacionariedad con ADF sobre la serie original
adf_original <- adf.test(ventas_ts)
adf_original
##
## Augmented Dickey-Fuller Test
##
## data: ventas_ts
## Dickey-Fuller = -8.3348, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
La serie original de ventas mensuales de Café Borinquen no es estacionaria.
# Diferenciamos la serie (d = 1)
ventas_diff <- diff(ventas_ts, differences = 1)
# Gráfica de la serie diferenciada
plot(ventas_diff,
xlab = "Año",
ylab = "Diferencia de ventas",
main = "Ventas mensuales diferenciadas (d = 1)",
xaxt = "n")
axis(1,
at = seq(2015, 2025, by = 1))
# ACF de la serie diferenciada
acf(ventas_diff,
lag.max = 12,
main = "ACF de ventas diferenciadas (d = 1)")
# Prueba ADF sobre la serie diferenciada
adf_diff <- adf.test(ventas_diff)
adf_diff
##
## Augmented Dickey-Fuller Test
##
## data: ventas_diff
## Dickey-Fuller = -6.6053, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
La serie diferenciada (d = 1) puede considerarse estacionaria, por lo que trabajaremos con modelos de la familia ARIMA(p, 1, q).
# Ajuste de modelos AR, MA, ARMA y ARIMA (con d = 1)
mod_ar1 <- arima(ventas_ts, order = c(1, 1, 0)) # AR(1)
mod_ma1 <- arima(ventas_ts, order = c(0, 1, 1)) # MA(1)
mod_arma11 <- arima(ventas_ts, order = c(1, 1, 1)) # ARMA(1,1)
mod_arma21 <- arima(ventas_ts, order = c(2, 1, 1)) # ARMA(2,1)
mod_ar2 <- arima(ventas_ts, order = c(2, 1, 0)) # AR(2)
# Comparación de los modelos mediante el criterio AIC
AIC(mod_ar1,
mod_ma1,
mod_arma11,
mod_arma21,
mod_ar2)
## df AIC
## mod_ar1 2 1002.6492
## mod_ma1 2 1002.5477
## mod_arma11 3 1004.3511
## mod_arma21 4 992.1293
## mod_ar2 3 1003.9639
ARIMA(2,1,1) (modelo mod_arma21).
summary(mod_arma21)
##
## Call:
## arima(x = ventas_ts, order = c(2, 1, 1))
##
## Coefficients:
## ar1 ar2 ma1
## 1.0431 -0.3870 -0.8320
## s.e. 0.0894 0.0807 0.0497
##
## sigma^2 estimated as 106.8: log likelihood = -492.06, aic = 992.13
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 2.459819 10.29393 7.133378 0.7102517 2.218066 0.9340055 -0.1298079
El modelo seleccionado es ARIMA(2,1,1) por ser el que presenta el menor AIC, lo cual lo convierte en el mejor ajuste entre los modelos probados. Sus parámetros principales resultan significativos y los residuos son consistentes con ruido blanco, indicando un modelo adecuado para pronosticar las ventas de Café Borinquen.
# serie de tiempo
ventas.ts <- ts(cafe$ventas, start = c(2015, 1), frequency = 12)
# modelo ARIMA
library(forecast)
modelo <- Arima(ventas.ts,
order = c(2, 1, 1),
seasonal = list(order = c(2, 1, 1), period = 12))
# Pronosticar enero diciembre 2026)
pron_2026 <- forecast(modelo, h = 12)
# Gráfica con serie histórica, pronóstico e intervalos de confianza
plot(pron_2026,
main = "Pronóstico de ventas Café Borinquen 2026",
xlab = "Año",
ylab = "Ventas")
La gráfica muestra que el modelo proyecta para 2026 ventas que se mantienen altas, siguiendo la misma tendencia creciente y el mismo patrón estacional observado en años anteriores. La zona sombreada alrededor del pronóstico son los intervalos de confianza, que indican el rango de valores posibles y muestran que la incertidumbre aumenta un poco a medida que avanzan los meses.
El análisis de las ventas mensuales de Café Borinquen mostró una tendencia creciente, un patrón estacional marcado y las fluctuaciones registradas a finales de 2024 y el 2025. Tras comparar varios modelos, el ARIMA(2,1,1) fue el mejor según el AIC y permitió generar pronósticos confiables para 2026, reflejando la continuidad del crecimiento y de los ciclos estacionales históricos. Estos resultados ofrecen a la gerencia una base sólida para planificar la contratación y distribución del personal, diseñar estrategias de mercadeo ajustadas a los meses de mayor demanda y anticipar variaciones estacionales al considerar nuevas inversiones y la posible apertura de sucursales.