Este trabajo tiene como propósito analizar la serie de tiempo correspondiente a las ventas mensuales de Café Borinquen mediante herramientas estadísticas y modelos de predicción. Para ello, se realizó una exploración visual inicial que permitió identificar tendencias, patrones estacionales y comportamiento residual, seguida de un análisis de autocorrelación que sirvió de base para la selección del modelo. Posteriormente, se aplicó la prueba de estacionariedad y se compararon diferentes modelos AR, MA, ARMA y ARIMA utilizando el criterio AIC para seleccionar el modelo más adecuado. Finalmente, se desarrolló un pronóstico para el año 2026, acompañado de su visualización e interpretación. Este proceso permitió comprender la dinámica temporal de la serie y generar estimaciones útiles para futuros análisis.

Parte 1

#Paso 1 
library(tidyverse)

# 1. Cargar tu base de datos
data1 <- read.csv("Cafe_Borinquen.csv")

# 2. Convertir la columna 'fecha' a tipo Date
data1 <- data1 %>% 
  mutate(fecha = as.Date(fecha, format = "%m/%d/%Y"))
# 3. Ver la estructura
str(data1)
## 'data.frame':    132 obs. of  2 variables:
##  $ fecha : Date, format: "2015-01-01" "2015-02-01" ...
##  $ ventas: num  236 250 253 242 246 ...
# Formato de serie de tiempo
attach(data1)

data1.ts <- ts(ventas, start = c(2015, 1), frequency = 12)

summary(data1)
##      fecha                ventas     
##  Min.   :2015-01-01   Min.   :236.3  
##  1st Qu.:2017-09-23   1st Qu.:283.3  
##  Median :2020-06-16   Median :323.1  
##  Mean   :2020-06-16   Mean   :325.7  
##  3rd Qu.:2023-03-08   3rd Qu.:366.2  
##  Max.   :2025-12-01   Max.   :420.0
# Inicio, fin y frecuencia de tu serie
start(data1.ts)
## [1] 2015    1
end(data1.ts)
## [1] 2025   12
frequency(data1.ts)
## [1] 12

La serie contiene 132 observaciones mensuales, que abarcan el periodo de enero de 2015 hasta la fecha más reciente disponible en el conjunto de datos. Los valores representan las ventas mensuales de Café Borinquen, expresadas en unidades monetarias. A lo largo del periodo, las ventas muestran fluctuaciones que reflejan variaciones propias del ciclo del negocio, como cambios estacionales, patrones de consumo, promociones, o eventos externos que pueden influir en la demanda. En conjunto, la serie ofrece una perspectiva clara del comportamiento histórico de las ventas durante los últimos años, permitiendo identificar tendencias generales, posibles patrones de estacionalidad y variaciones significativas que pueden informar procesos de análisis, planeación y pronóstico.

library(plotly)
library(dplyr)

# comportamiento
# Gráfica interactiva con plotly
fig <- plot_ly(data1,
               x = ~fecha,
               y = ~ventas,
               type = 'scatter',
               mode = 'lines',
               line = list(color = 'steelblue', width = 2)) %>%
  layout(
    title = "Comportamiento de Ventas Mensuales - Café Borinquen",
    xaxis = list(title = "Año"),
    yaxis = list(title = "Ventas"),
    hovermode = "x unified"
  )

fig

Observamos fluctuaciones mensuales en las ventas de Café Borinquen desde 2015, con un patrón estacional claramente marcado donde ciertos meses presentan incrementos consistentes. A lo largo del periodo, las ventas muestran una tendencia general al alza, reflejando un crecimiento sostenido del negocio. En los años más recientes, los niveles de ventas alcanzan sus valores más altos dentro del periodo analizado, superando los registros iniciales y evidenciando una expansión progresiva en la demanda del producto.

# Descomposicion 

library(zoo)

data1.ts_clean <- na.approx(data1.ts)
descomp1 <- decompose(data1.ts_clean)
# 3. Graficar componentes
plot(descomp1)

Tendencia: la serie muestra un aumento sostenido en el nivel de ventas a lo largo del tiempo, reflejando un crecimiento gradual del negocio. La tendencia es claramente ascendente, especialmente después de 2020, cuando las ventas alcanzan niveles notablemente superiores a los observados al inicio del periodo. Estacionalidad: se identifican patrones estacionales que se repiten de manera consistente cada año. Estos picos y caídas regulares sugieren que ciertos meses presentan una mayor demanda del producto, mientras que otros tienden a mostrar reducciones sistemáticas. La estacionalidad es marcada y representa una parte importante del comportamiento de la serie. Componente aleatorio: recoge fluctuaciones irregulares que no pueden atribuirse ni a la tendencia ni a la estacionalidad. Estas variaciones pueden estar asociadas a eventos puntuales del negocio, factores externos impredecibles o cambios temporales en la demanda. Aunque la mayor parte del comportamiento se explica por la tendencia y estacionalidad, el componente aleatorio introduce variabilidad adicional en algunos puntos del periodo analizado.

# Estacionalidad 
monthplot(data1.ts_clean,
          ylab = "Ventas",
          xlab = "Mes",
          main = "Patrón Estacional de Ventas - Café Borinquen")

Los valores estacionales muestran variaciones que se repiten cada año, reflejando un patrón claro de meses con mayor y menor actividad en las ventas. En general, se observa que loa meses de mayo junio julio y agosto tienden sistemáticamente a presentar ventas por encima del promedio anual, mientras que otros muestran reducciones consistentes, lo que sugiere la presencia de un ciclo estacional bien definido. La magnitud de estas variaciones no es extrema, pero sí lo suficientemente marcada como para indicar que la estacionalidad desempeña un papel relevante en el comportamiento de la serie, influenciada probablemente por patrones de consumo característicos, eventos anuales o dinámicas propias del negocio.

# autocorrelacion 
acf(data1.ts_clean, lag.max = 36, main = "")

La autocorrelación es muy alta en los primeros rezagos y disminuye de forma gradual a medida que aumenta la distancia temporal. Esto sugiere una fuerte persistencia en la serie, es decir, las ventas de un mes están estrechamente relacionadas con las ventas de los meses anteriores. El descenso lento de la ACF es típico de series con tendencia creciente, donde los cambios ocurren de manera progresiva y no abrupta. Además, la presencia de varios rezagos significativos refuerza la idea de que la dinámica de ventas incorpora patrones tanto de tendencia como de estacionalidad.

# Prueba estacionariedad 

library(tseries)
adf.test(data1.ts_clean)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data1.ts_clean
## Dickey-Fuller = -8.3348, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
# 2. Correlogramas de la serie original
par(mfrow = c(1,2))
acf(data1.ts_clean, lag.max = 36, main = "ACF ventas")
pacf(data1.ts_clean, lag.max = 36, main = "PACF ventas")

La ACF presenta un decaimiento gradual y persistente, indicando una fuerte autocorrelación temporal y sugiriendo la presencia de un componente autorregresivo. Por otro lado, la PACF muestra un corte claro en el primer rezago, lo cual es consistente con un modelo AR(1). Este patrón coincide con el comportamiento típico de series con dependencia de corto plazo, donde el valor del mes anterior explica gran parte de la variación del valor presente. Los resultados refuerzan la pertinencia de considerar modelos AR o ARMA en la etapa de ajuste.

Parte 2

# 3. Ajuste de modelos ARMA / ARIMA candidatos
mod_ar   <- arima(data1.ts_clean, order = c(1,0,0))   # AR(1)
mod_ma   <- arima(data1.ts_clean, order = c(0,0,1))   # MA(1)
mod_arma <- arima(data1.ts_clean, order = c(1,0,1))   # ARMA(1,1)
mod_arima <- arima(data1.ts_clean, order = c(2,0,1))  # un ARIMA(p,0,q) adicional
# 4. Comparación por AIC
AIC(mod_ar, mod_ma, mod_arma, mod_arima)
##           df      AIC
## mod_ar     3 1023.526
## mod_ma     3 1262.173
## mod_arma   4 1016.218
## mod_arima  5 1018.676

Selección del modelo mediante AIC: Se ajustaron los modelos AR(1), MA(1), ARMA(1,1) y ARIMA(2,0,1). Al comparar los valores de AIC, se observa que el modelo ARMA(1,1) presenta el valor más bajo (AIC ≈ 1016.22), por lo que se selecciona como el modelo final para las ventas mensuales de Café Borinquen. Este resultado es consistente con los patrones observados en los correlogramas, donde la ACF muestra un decaimiento gradual y la PACF un corte en el primer rezago, indicando una estructura autorregresiva con un componente adicional de media móvil.

# Pronostico
library(forecast)
pronostico <- forecast(mod_arma, h = 12)
autoplot(pronostico)

El modelo ARMA(1,1) proyecta un crecimiento moderado en las ventas durante el 2026, con un comportamiento consistente con la tendencia y estacionalidad histórica. Los intervalos de confianza se amplían con el horizonte del pronóstico, reflejando mayor incertidumbre, aunque el escenario central permanece estable.

Parte 3

# Visualización
autoplot(pronostico) +
  ggtitle("Pronóstico de Ventas 2026 - Café Borinquen") +
  xlab("Año") +
  ylab("Ventas")

El pronóstico para 2026 indica que las ventas de Café Borinquen seguirán un comportamiento similar al observado en años recientes, con una tendencia ligeramente creciente y la estacionalidad característica de la serie. Los intervalos de confianza se amplían hacia finales del año, reflejando mayor incertidumbre, pero el modelo sugiere que las ventas permanecerán dentro de un rango estable y coherente con la dinámica histórica.

En resumen, el análisis realizado permitió identificar que la serie de ventas de Café Borinquen presenta tendencia creciente y un patrón estacional bien definido. La prueba de estacionariedad confirmó que la serie es estacionaria sin necesidad de diferenciación, lo que facilitó el ajuste de varios modelos ARMA y ARIMA. Tras comparar sus valores de AIC, el modelo ARMA(1,1) resultó ser el más adecuado para describir la estructura temporal de la serie. Con este modelo se generó un pronóstico para el año 2026, el cual sugiere un comportamiento estable y ligeramente creciente en las ventas, en concordancia con la evolución histórica. El trabajo demuestra la utilidad de los modelos de series de tiempo para analizar y anticipar patrones de comportamiento en datos económicos.