• Saltar a la navegación principal
  • Saltar al contenido principal
Logo Codificando Bits

Codificando Bits

  • Academia
    • Rutas
    • Cursos
    • Proyectos
    • Tutoriales
  • Acceder
  • Suscribirse

Pronósticos de Series de Tiempo con Prophet: efecto de los festivos

La inclusión de variables exógenas en un modelo de predictivo puede mejorar considerablemente la calidad de los pronósticos generados sobre una Serie de Tiempo.

Así que en este tutorial veremos cómo usar la librería Prophet de Meta para generar pronósticos de Series de Tiempo incluyendo variables exógenas. En particular, veremos cómo pronosticar los niveles de ventas de una empresa usando no sólo el registro histórico de ventas sino una variable exógena correspondiente a los días festivos.

Recuerda que este tutorial es exclusivo para suscriptores a la Academia Online. Si estás suscrito podrás acceder al enlace de descarga del código fuente y del set de datos al final del tutorial.

¿Qué es Prophet?

Para este tutorial sugiero revisar el tutorial introductorio a Prophet disponible en el canal de YouTube, en donde explico las principales características y muestro el principio de funcionamiento de esta librería.

Sin embargo, para lo que nos interesa en este tutorial basta con decir que Prophet (antes conocida como Facebook Prophet) es una librería de Python que permite realizar pronósticos de Series de Tiempo.

La filosofía detrás de esta librería es que podamos usarla fácilmente, sin necesidad de escribir demasiadas líneas de código y sin que sean requeridos demasiados conocimientos técnicos sobre el pronóstico de series temporales.

¿Qué son las variables exógenas?

En el contexto de la generación de pronósticos de Series de Tiempo, una variable exógena es una variable externa a la Serie que queremos predecir, pero que puede influir en el comportamiento de los pronósticos.

Es decir que la variable exógena:

  • No forma parte de la Serie
  • No es una versión rezagada de la Serie
  • Pero puede añadir información que permita mejorar los pronósticos

Por ejemplo, para este tutorial, nuestra serie contiene registros históricos de niveles de ventas mientras que la variable exógena que analizaremos serán los días festivos en Estados Unidos.

El problema a resolver

El objetivo de este tutorial es entrenar y evaluar el desempeño de un modelo de pronósticos de Series de Tiempo en Prophet para predecir los niveles de ventas e incluyendo información exógena correspondiente a los días festivos.

Configuración inicial e importación de librerías

Comencemos instalando la librería con ayuda del comando «pip» de Python:

pip install prophet

A continuación importaremos las librerías necesarias:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

from prophet import Prophet

from sklearn.metrics import (
    mean_absolute_percentage_error as mape,
    root_mean_squared_error as rmse)

En particular usaremos:

  • Matplotlib y Seaborn (líneas 1 y 2) para generar gráficos de las Series de Tiempo
  • Pandas para leer el set de datos (línea 3)
  • Prophet para generar los pronósticos (línea 4)
  • Los módulos «mean_absolute_percentage_error» y «root_mean_squared_error» de Scikit-Learn para evaluar el desempeño del modelo (líneas 7 a 9)

Además, desactivaremos los mensajes de advertencia que Prophet suele mostrar en pantalla en cada ejecución (pues dichos mensajes no son necesarios y pueden causar confusión):

import logging

logging.getLogger("prophet").setLevel(logging.WARNING)
logging.getLogger("cmdstanpy").setLevel(logging.WARNING)

Y finalmente fijaremos el estilo de gráfico de Seaborn y ajustaremos el tamaño por defecto de las figuras:

sns.set_style("darkgrid")
plt.rcParams["figure.figsize"] = (12, 4)

Muy bien, con esto ya estamos listos para ver las características del set de datos.

Lectura y exploración del set de datos

Usaremos una serie de tiempo que contiene los niveles de ventas diarios (en USD) de una tienda en Estados Unidos durante los años 2023 y 2024.

Comencemos leyendo el set de datos con ayuda de Pandas:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Conclusión

En este tutorial hemos visto lo sencillo que resulta incluir una variable exógena (como son los festivos) en un modelo Prophet.

En esencia lo que debemos hacer es crear un DataFrame que contendrá la información (fecha y nombre) de los días festivos y luego simplemente debemos presentarle a Prophet este DataFrame al momento de crear la instancia del modelo.

Y hemos visto que, para este ejemplo en particular, la inclusión de esta variable exógena logra mejorar el desempeño del modelo. Y aunque en la práctica esta mejora dependerá de las características propias de los datos, en ocasiones se sugiere considerar las variables exógenas como una alternativa que podría mejorar la calidad de las predicciones.

Recuerda que si eres suscriptor me puedes contactar a través de la Intranet (sección «Soporte») para aclarar las dudas que tengas de este tutorial.

© Codificando Bits, LLC | Blog | Contacto | Servicios | Acerca de | Políticas

¿Has olvidado la contraseña?
¿Has perdido tu contraseña? Por favor, introduce tu nombre de usuario o dirección de correo electrónico. Recibirás por correo electrónico un enlace para crear una nueva contraseña.
body::-webkit-scrollbar { width: 7px; } body::-webkit-scrollbar-track { border-radius: 10px; background: #f0f0f0; } body::-webkit-scrollbar-thumb { border-radius: 50px; background: #dfdbdb }