Las empresas dependen de la predicción de tendencias futuras para tomar decisiones estratégicas, como pronosticar las ventas de productos o evaluar la variabilidad de la demanda. Una forma de realizar predicciones eficaces es el pronóstico de series temporales. Un principio fundamental del pronóstico de series temporales es su dependencia de los valores de datos históricos para predecir resultados futuros. Esto requiere prestar atención a los datos, ya que los datos prácticos suelen ser ruidosos o incompletos, por lo que son difíciles de predecir.
Aunque existen muchas herramientas disponibles para la previsión de series temporales, Facebook Prophet está diseñado específicamente para hacer frente a las complejidades del mundo real, que van desde las tendencias no lineales y la estacionalidad hasta el impacto de eventos especiales, como días festivos y campañas de marketing o picos de tráfico. Si no estás familiarizado con el pronóstico de series temporales, te recomiendo que realices nuestro curso Análisis de series temporales en Python y/o nuestro curso Pronóstico en R.
¿Qué es Facebook Prophet?
Prophet es una biblioteca de predicción de código abierto desarrollada por el equipo de ciencia de datos central de Facebook. Está disponible tanto en Python como en R. Parte del motivo por el que a los analistas y científicos de datos les gusta utilizarlo es que automatiza muchos de los pasos rutinarios de los métodos de previsión tradicionales. Con tal flexibilidad, ayuda a los usuarios a producir rápidamente previsiones interpretables y de calidad.
Marco de modelado central de Facebook Prophet
El enfoque de modelización de Facebook Prophet es estructurado, peroflexible. Descompone una serie temporal en cuatro componentes ces clave, a saber, tendencia, estacionalidad, días festivos y error. Ese tercer componente, al que llamé «las vacaciones», no es tan habitual. La descomposición clásica y STL especifican tres partes: tendencia, estacionalidad y error.
Al aclarar cómo las tendencias, la estacionalidad y los días festivos contribuyen al pronóstico final, la descomposición ayuda a validar el razonamiento del modelo mientras intentamos tomar decisiones informadas.
Descomposición de series temporales
Prophet utiliza un modelo aditivo en el que la serie temporal y(t) se expresa como:
¿Dónde?
-
La tendencia (
g(t)) se refiere al crecimiento o descenso a largo plazo. -
La estacionalidad (
s(t)) incluye patrones recurrentes, como fluctuaciones semanales, mensuales o anuales. -
Los efectos festivos (
h(t)) tienen en cuenta acontecimientos irregulares pero predecibles, como el Black Friday o las fiestas nacionales. -
El error (
et) es el ruido residual que no se explica por los demás componentes.
Además de proporcionar interpretabilidad al mostrar qué factores impulsan las predicciones, también automatiza la mayor parte del proceso de predicción de series temporales, como la detección de estacionalidad y el tratamiento de valores perdidos.
Al encargarse de estas complejas operaciones de preprocesamiento, Prophet reduce la necesidad de contar con amplios conocimientos estadísticos, como suele ser necesario en los métodos estadísticos convencionales. ARIMA, por ejemplo, requiere que se mantengan las hipótesis de estacionariedad y no tiene en cuenta oficialmente los factores externos, mientras que Prophet modela explícitamente la estacionalidad y el impacto de los días festivos, por lo que se considera más fácil para la previsión empresarial.
Especificación del componente de tendencia
Prophet tiene dos modelos de tendencias:
- El modelo de crecimiento logístico resulta útil cuando una serie temporal se satura a su capacidad máxima, de forma similar a lo que ocurre con la adopción de una nueva aplicación por parte de los usuarios.
- El modelo lineal por tramos divide la tendencia en segmentos con puntos de cambio, lo que facilita modelar cambios repentinos en el crecimiento.
Modelización de la estacionalidad
La estacionalidad se modela utilizando una serie de Fourier que permite funciones periódicas suaves en datos de series temporales. Tiene dos formas principales de comportamiento estacional:
- La estacionalidad aditiva es necesaria cuando las variaciones estacionales mantienen una magnitud constante a lo largo del tiempo.
- La estacionalidad multiplicativa es adecuada cuando las fluctuaciones estacionales crecen con la tendencia, como por ejemplo, cuando el volumen de ventas aumenta con el crecimiento general del mercado.
Además, los usuarios también pueden definir estacionalidades personalizadas para representar patrones únicos y específicos del dominio, por ejemplo, promociones trimestrales.
Integración de días festivos y eventos
Prophet también ofrece la posibilidad de incorporar tanto días festivos predefinidos como listas arbitrarias de eventos. Esto resulta especialmente ventajoso a la hora de modelar ciclos económicos, festivos culturales o eventos puntuales, como lanzamientos de productos. También se pueden añadir acontecimientos inesperados, como la COVID-19, como regresores adicionales para actualizar dinámicamente las previsiones. El modelado explícito de este tipo de eventos mejora la precisión y proporciona información sobre el impacto de las fechas especiales en las tendencias subyacentes.
Manejo del ruido y los valores atípicos
Los datos del mundo real suelen contener ruido y valores atípicos, lo que puede dar lugar a predicciones distorsionadas del modelo. Prophet cuenta con funciones de pérdida robustas y componentes de tendencia no paramétricos que hacen que la predicción sea más resistente a los valores atípicos en los datos.
Para mejorar aún más la estabilidad de las previsiones, resulta útil analizar los gráficos residuales y preprocesar los datos mediante winsorización o eliminación de anomalías. Estos pasos garantizan que el modelo aprenda tendencias reales, en lugar de ruido aleatorio.
Cuándo utilizar Facebook Prophet (y cuándo no hacerlo)
Al igual que la mayoría de los modelos y técnicas de machine learning, Prophet no es una solución válida para todos los casos. Entender en qué aspectos destaca y en cuáles no es fundamental para utilizarlo de forma eficaz.
Puntos fuertes y escenarios ideales
Prophet es especialmente eficaz cuando:
- Cuando los datos tienen una clara estacionalidad diaria, semanal o anual.
- Los conjuntos de datos están incompletos y requieren un tratamiento automatizado de los valores perdidos y los valores atípicos.
- Los usuarios necesitan un análisis exploratorio rápido y el desarrollo inicial del modelo.
Su simplicidad lo hace accesible a usuarios con conocimientos estadísticos limitados, mientras que su interpretabilidad ayuda a los analistas y científicos de datos a comunicar los resultados de manera eficaz a las partes interesadas sin conocimientos técnicos.
Limitaciones y posibles dificultades
Prophet puede ser menos adecuado en los siguientes casos:
- Datos muy volátiles o no estacionales, en los que no hay patrones periódicos regulares.
- Previsiones a largo plazo cuando las tendencias son impredecibles.
- Las tendencias no lineales no se captan con los modelos lineales por tramos ni con los modelos logísticos.
Una regla de oro al utilizar Prophet, o cualquier modelo de predicción, es evitar adoptarlo a ciegas. Sin una validación adecuada, los modelos pueden generar fácilmente previsiones excesivamente optimistas o engañosas, como también se ha observado en varios debates comunitarios y en fallos de previsión muy sonados.
Trabajar con Prophet en Python
Paso 1: Importar bibliotecas
Primero, carga todos los paquetes Python necesarios:
-
pandaspara la manipulación de datos -
prophetconstruir el modelo de predicción -
matplotlibpara visualización -
sklearn.metrics– para calcular el MAPE, la métrica de error
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
from sklearn.metrics import mean_absolute_percentage_error
Paso 2: Cargar el conjunto de datos
A continuación, leemos tu archivo CSV que contiene los precios históricos de los futuros del oro. Aquí tienes unenlace al conjunto de datos de Kaggle que estoy utilizando.
file_path = "future-gc00-daily-prices.csv"
gold_ts = pd.read_csv(file_path)
Paso 3: Limpiar los datos
Ahora hay que limpiar los datos. Esto significa que:
-
Eliminar las comas de las columnas numéricas y convertirlas a números flotantes.
-
Convierte la columna «
Date» de formato de cadena a fecha y hora.
Esto garantiza que Prophet pueda comprender y ordenar correctamente las fechas.
for col in ["Open", "High", "Low", "Close"]:
gold_ts[col] = gold_ts[col].str.replace(",", "").astype(float)
gold_ts["Date"] = pd.to_datetime(gold_ts["Date"], format="%m/%d/%Y")
Paso 4: Ordena los datos por fecha.
Ordenamos los datos por orden cronológico. Este es un paso importante que puede pasarse por alto.
gold_ts = gold_ts.sort_values("Date")
Paso 5: Prepara los datos para Prophet.
También tenemos que preparar los datos para Prophet, que espera que las columnas de entrada se denominen:
-
ds→ fecha -
y→ valor a pronosticar (en este caso, el precioClose)
gold_ts = gold_ts[["Date", "Close"]].rename(columns={"Date": "ds", "Close": "y"})
Paso 6: Dividir en conjuntos de entrenamiento y prueba
Ahora dividimos los datos en versiones de entrenamiento y prueba.
- Conserva la mayor parte de los datos para el entrenamiento.
- Reserva las últimas 180 filas (o el 10 % si son menos) para comprobar la precisión del modelo.
test_size = min(180, len(gold_ts) // 10)
train = gold_ts.iloc[:-test_size]
test = gold_ts.iloc[-test_size:]
Paso 7: Ajusta el modelo Prophet.
Entrena a Prophet con los datos históricos con los componentes estacionales diarios y anuales habilitados.
model = Prophet(daily_seasonality=True, yearly_seasonality=True)
model.fit(train)
Paso 8: Previsión de valores futuros
Hacemos predicciones para tantos días como en el conjunto de pruebas.
La previsión contiene columnas como « yhat » (previsión), « yhat_lower » (previsión de la temperatura máxima) y « yhat_upper » (previsión de la temperatura mínima).
future = model.make_future_dataframe(periods=test_size)
forecast = model.predict(future)
Paso 9: Alinear las predicciones con los resultados reales.
Combina los precios de cierre reales con las predicciones del modelo en fechas coincidentes para compararlos directamente.
merged = pd.merge(test, forecast[["ds", "yhat"]], on="ds", how="inner")
Paso 10: Calcular MAPE
Ahora medimos la precisión de la previsión. Si no hay solapamiento en las fechas, te avisa en lugar de bloquearse.
if merged.empty:
print("No overlapping dates between forecast and test set.")
else:
mape = mean_absolute_percentage_error(merged["y"], merged["yhat"]) * 100
print(f"Mean Absolute Percentage Error (MAPE): {mape:.2f}%")
Aquí, el error porcentual absoluto medio (MAPE): 5,83 %
Paso 11: Hacer gráfico de la previsión
Visualizamos la previsión, los intervalos de confianza y el historial real.
fig1 = model.plot(forecast)
plt.title("Gold Futures (GC00) - Close Price Forecast")
plt.xlabel("Date")
plt.ylabel("Close Price")
plt.show()

Paso 12: Hacer gráfico de los componentes estacionales
Es útil mostrar cómo los patrones de tendencia, diarios y de estacionalidad anual contribuyen a la previsión.
fig2 = model.plot_components(forecast)
plt.show()

Paso 13: Revisar muestras de pronósticos
Muestra los últimos valores previstos y sus rangos de incertidumbre.
print(forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail(10))
Valores previstos de muestra:
ds yhat yhat_lower yhat_upper
3714 2023-11-09 1834.568081 1743.127873 1922.791205
3715 2023-11-10 1833.323500 1749.265678 1937.246093
3716 2023-11-11 1832.818196 1740.941278 1921.772611
3717 2023-11-12 1832.370884 1745.285047 1925.012684
3718 2023-11-13 1832.644350 1736.792708 1919.057042
3719 2023-11-14 1832.017761 1736.229502 1929.786669
3720 2023-11-15 1831.650906 1743.190077 1924.851936
3721 2023-11-16 1831.566521 1738.181184 1933.026740
3722 2023-11-17 1830.427713 1736.038529 1919.505155
3723 2023-11-18 1830.029816 1737.022754 1922.118728
Validación y pruebas de Facebook Prophet
Metodología de validación
Se requiere una validación cruzada de series temporales para simular escenarios de predicción del mundo real. Es importante evaluar el rendimiento del modelo en múltiples conjuntos de validación consecutivos. No solo ayuda a evitar el sesgo de anticipación, sino que también proporciona generalizabilidad a datos futuros no vistos.
Algunas de las métricas de evaluación estándar incluyen:
- El error absoluto medio (MAE) mide la magnitud media de los errores, sin tener en cuenta la dirección.
- El error porcentual absoluto medio (MAPE) mide la diferencia porcentual absoluta media. Se puede interpretar fácilmente en diferentes escalas. Este es el que vimos en nuestro ejemplo de Python.
Análisis comparativo
En comparación con ARIMA o LSTM, Prophet destaca en:
- Gestión de la estacionalidad irregular y los efectos de las vacaciones
- Demostrando solidez ante datos faltantes, valores atípicos e irregularidades comerciales.
Sin embargo, Prophet puede tener un rendimiento inferior en escenarios que impliquen patrones altamente no lineales o conjuntos de datos con una estacionalidad débil.
Aplicaciones prácticas y limitaciones
Casos prácticos reales
Prophet se ha adoptado ampliamente en diferentes sectores para casos de uso como:
- Previsión de ventas minoristas, evaluación de la demanda y gestión del inventario.
- Predicción del tráfico web para comprender la participación de los usuarios
- Previsión de la demanda energética para equilibrar el suministro y el consumo de manera eficiente.
A pesar de sus beneficios, ha habido casos en los que los patrones históricos han fallado debido a perturbaciones inesperadas, como ocurrió durante la pandemia.
Limitaciones de escalabilidad
Prophet puede manejar conjuntos de datos de tamaño moderado, lo que resulta adecuado para la mayoría de las tareas de previsión empresarial y operativa. Sin embargo, su uso con conjuntos de datos extremadamente grandes o series temporales de alta frecuencia resulta computacionalmente costoso debido al marco de modelización bayesiano subyacente. Para paliar esto, se sugiere pronosticar múltiples series temporales en paralelo. Otro enfoque práctico consiste en agregar o reducir la resolución de los datos. Reduce los costes de memoria y tiempo de ejecución sin perder valiosos patrones temporales.
Limitaciones clave
Prophet asume una única variable objetivo y modela su tendencia utilizando curvas de crecimiento lineales por tramos o logísticas. Tales supuestos pueden limitar su flexibilidad para problemas multivariantes o no dominados por tendencias. Por lo tanto, los usuarios deben añadir conocimientos sobre el dominio a las previsiones de Prophet, junto con una validación externa, para garantizar su fiabilidad.
Fracasos y críticas en el mundo real
Los fallos de previsión de gran repercusión, como el colapso del mercado inmobiliario de Zillow, ponen de relieve los riesgos de confiar excesivamente en el software de previsión automatizado. Confiar demasiado en los resultados de los modelos sin someterlos a revisión humana puede dar lugar a errores costosos. Por lo tanto, se recomienda realizar una validación exhaustiva y una planificación de escenarios a la hora de interpretar los resultados de las previsiones.
No dudes en cuestionar todos los modelos y tendencias. Fomenta una cultura que promueva el pensamiento crítico y permita a los equipos cuestionar el statu quo. He visto cómo estos equipos crean soluciones de previsión sólidas de forma sistemática.
Por último, recomiendo encarecidamente adoptar una mentalidad de «confiar pero verificar» y añadir una capa adicional de conocimiento del dominio para realizar una comprobación de la validez de los resultados.
Trayectoria de desarrollo futuro
Prophet sigue evolucionando gracias a la investigación y las contribuciones de la comunidad. Las mejoras continuas en Prophet incluyen:
- Soporte multivariante
- Mayor escalabilidad para grandes conjuntos de datos.
- Extensiones impulsadas por la comunidad
La investigación activa implica integrar nuevos métodos estadísticos y mejorar el rendimiento en conjuntos de datos complejos y de alta frecuencia.
Conclusión
Facebook Prophet es una potente herramienta para la previsión de series temporales que ofrece automatización, interpretabilidad y flexibilidad. Funciona bien para la previsión exploratoria en los negocios y otros ámbitos con una fuerte estacionalidad o eventos especiales.
Pero eso no lo convierte en una solución plug-and-play. Para realizar predicciones fiables, los usuarios deben garantizar una validación diligente, un ajuste de los parámetros y un conocimiento del dominio. Al equilibrar la automatización de Prophet con el criterio humano reflexivo, los analistas pueden desarrollar conocimientos prácticos y evitar errores comunes.
Para un aprendizaje práctico, echa un vistazo a nuestros cursos y programas de habilidades:

Transformadora de Datos y Estratega de IA | Conferenciante Internacional | Ética de la IA | Inventora | Mujer Logradora Global | Autora
Preguntas frecuentes
¿Para qué se utiliza Facebook Prophet?
Facebook Prophet se utiliza para realizar previsiones de series temporales, lo que ayuda a predecir tendencias, estacionalidad y efectos de eventos en datos como ventas, demanda o tráfico web.
¿Cómo gestiona Prophet los días festivos y los eventos especiales?
Prophet permite añadir eventos predefinidos o personalizados al modelo, lo que tiene en cuenta los picos o caídas irregulares en la serie temporal.
¿Por qué Prophet es tan popular para la previsión empresarial?
Prophet es automatizado, interpretable y resistente frente a datos faltantes y valores atípicos, lo que lo hace ideal para realizar previsiones rápidas y fiables.
¿Cuándo se debe evitar usar Facebook Prophet?
Se puede evitar el uso de Prophet en el caso de datos muy volátiles o no estacionales, o cuando las tendencias son demasiado impredecibles.
¿Cuáles son las principales ventajas de Prophet con respecto a ARIMA?
A diferencia de ARIMA, Prophet no requiere una estacionariedad estricta, maneja datos faltantes y detecta automáticamente los puntos de cambio.


