Se trabaja con el modelo Prophet propuesto por el equipo de Facebook en 2018, cuenta con la siguiente estructura:

\[\begin{equation} y(t) = g(t) + s(t) + h(t) + \epsilon_t \end{equation}\] Aquí:

Aquí:
Incorporamos cambios de tendencia en el modelo de crecimiento definiendo explícitamente puntos de cambio donde se permite que la tasa de crecimiento cambie. Supongamos que hay \(S\) puntos de cambio en los tiempos \(s_j\), \(j = 1, \ldots, S\). Definimos un vector de ajustes de tasa \(\delta \in \mathbb{R}^S\), donde \(\delta_j\) es el cambio en la tasa que ocurre en el tiempo \(s_j\). La tasa en cualquier momento \(t\) es entonces la tasa base \(k\), más todos los ajustes hasta ese punto: \(k + \sum_{j:t>s_j} \delta_j\). Esto se representa de manera más clara definiendo un vector \(a(t) \in \{0, 1\}^S\) tal que:
\[\begin{equation} a_j(t) = \begin{cases} 1, & \text{si } t \geq s_j, \\ 0, & \text{de lo contrario}. \end{cases} \end{equation}\]
La tasa en el tiempo \(t\) es entonces \(k + a(t)^\top \delta\). Cuando se ajusta la tasa \(k\), el parámetro de desplazamiento \(m\) también debe ajustarse para conectar los extremos de los segmentos.
Prophet La corrección adecuada en el punto de cambio \(j\) se calcula fácilmente con la siguiente expresión:

\[\begin{equation} \gamma_j = \left( s_j - m - \sum_{l<j} \gamma_l \right) \left( 1 - \frac{k + \sum_{l<j} \delta_l}{k + \sum_{l \leq j} \delta_l} \right). \end{equation}\]

El modelo de crecimiento logístico por tramos es entonces

\[\begin{equation} g(t) = \frac{C(t)}{1 + \exp \left( - (k + a(t)^\top \delta)(t - (m + a(t)^\top \gamma)) \right)} \end{equation}\]

Para problemas de pronóstico que no muestran un crecimiento saturado, un modelo con una tasa de crecimiento constante por tramos es una opción parsimoniosa y útil. El modelo de tendencia en este caso es:

\[ g(t) = (k + a(t)^\top \delta)t + (m + a(t)^\top \gamma), \]

donde: * \(k\) es la tasa de crecimiento * \(\delta\) contiene los ajustes de la tasa * \(m\) es el parámetro de desplazamiento * \(\gamma_j\) se establece en \(-s_j \delta_j\)

Los puntos de cambio \(s_j\) pueden ser especificados por el analista usando fechas conocidas de lanzamientos de productos y otros eventos que alteran el crecimiento, o pueden ser seleccionados automáticamente a partir de un conjunto de candidatos. La selección automática se puede realizar de manera natural con la formulación en las ecuaciones anteriores (3) y (4) aplicando un prior escaso sobre \(\delta\).
A menudo, se especifica un gran número de puntos de cambio (por ejemplo, uno por mes para un historial de varios años) y se usa el prior \(\delta_j \sim \text{Laplace}(0, \tau)\). El parámetro \(\tau\) controla directamente la flexibilidad del modelo para alterar su tasa. Es importante destacar que un prior escaso sobre los ajustes \(\delta\) no afecta la tasa de crecimiento primaria \(k\), de modo que, a medida que \(\tau\) tiende a 0, el ajuste se reduce al crecimiento logístico o lineal estándar (no por tramos).

\[ s(t) = \sum_{n=1}^{N} \left( a_n \cos \left( \frac{2\pi nt}{P} \right) + b_n \sin \left( \frac{2\pi nt}{P} \right) \right) \]

Donde:

\(s(t)\) es la función de estacionalidad en el tiempo \(t\) \(N\) es el número de términos en la serie de Fourier * \(a_n\) y \(b_n\) son coeficientes que determinan la amplitud y la fase de las componentes de la serie de Fourier, respectivamente. Estos coeficientes deben ser estimados a partir de los datos.

\[s(t) = X(t)\beta\]

Donde:

  • \(s(t)\) es la función de estacionalidad en el tiempo \(t\) * \(X(t)\) es la matriz de diseño que contiene las características de la estacionalidad en el tiempo \(t\) \(\beta\) es el vector de parámetros que determinan la relación entre las características de la estacionalidad y la función de estacionalidad. \(\beta \sim \text{Normal}(0, \sigma^2)\)

Para modelar los efectos de los días festivos, asignamos a cada día festivo \(i\) un parámetro \(\kappa_i\), que representa el cambio correspondiente en el pronóstico. Esto se hace de manera similar a la estacionalidad, generando una matriz de regresores: \

\[ Z(t) = [1(t \in D_1), \ldots, 1(t \in D_L)] \]

Donde \(D_i\) es el conjunto de días del día festivo \(i\), y así:

\[ h(t) = Z(t)\kappa \]

Al igual que con la estacionalidad, se utiliza un prior \(\kappa \sim \text{Normal}(0, \nu^2)\).

Análisis exploratorio

Se observa un patrón estacional para la serie temporal,con un aumento constante del número de visitas a través de los años, siento el período mas notorio posterior al año 2020, año caracterizado por la pandemia.
En las festividades como lo es la navidad, se observan picos considerables de disminución del número de visitas a la página, dónde para los días de pascua y viernes negro se ve un aumento en estas mismas, a continuación se ajusta el modelo Prophet

Ajuste del modelo Prophet

Serie estimada

Se observa el ajuste de la serie, este ajuste sigue las tendencias generales de la serie, y no tiene a estancarse en estimaciones medias. La flexibilidad del modelo permite modelar los puntos de cambio y el cambio considerable observado en la etapa de pandemia.

Descomposición de la serie en su etapa estacional, efecto de las festividades y puntos de cambio de la serie temporal del número de visitas diarias a una página web

Se observa el comportamiento ascendente a través de los años de las visitas, a nivel semanal, se ve que la mayor frecuencia de visitas se encuentra en los días laborales (Lunes a Viernes). Se observa a nivel mensual que la mayor cantidad de visitas se encuentran en el mes de enero decayendo con una periodicidad hasta diciembre.

También se observa como los puntos de cambio de la serie, y en general el efecto de las festividades permiten un excelente ajuste de la serie.

Desempeño del modelo

ME RMSE MAE MPE MAPE
Test set -148.3768 238.7698 189.2937 -9.183819 11.01229

El modelo cuenta con métricas bastante óptimas con un MAPE de aproximadamente el 11% obteniendo así buenas predicciones en la etapa de entrenamiento.