Análisis de series temporales en Python y R

Tutorial comparativo con Prophet

Compare los flujos de trabajo de predicción de series temporales utilizando Facebook Prophet tanto en Python como en R. Este tutorial proporciona ejemplos comparativos para ayudarle a comprender cómo cargar datos, ajustar modelos y visualizar predicciones en cada entorno.

Programación
Autor/a
Afiliación
Fecha de publicación

12 de febrero de 2024

Fecha de modificación

9 de mayo de 2025

Palabras clave

análisis de series temporales Python R, Tutorial de Prophet, Python Prophet, R Prophet, Predicción en Python, Predicción en R

Introducción

El análisis de series temporales es esencial para pronosticar y comprender las tendencias en datos secuenciales. En este tutorial, proporcionamos ejemplos comparativos utilizando Facebook Prophet, una herramienta popular para la predicción de series temporales, tanto en Python como en R. Aprenderá a preparar sus datos, ajustar un modelo y visualizar tendencias futuras, lo que le permitirá comparar flujos de trabajo y elegir el mejor enfoque para sus proyectos.



Uso de Facebook Prophet para la previsión de series temporales

A continuación, encontrará un panel con pestañas que muestra cómo crear y visualizar una previsión utilizando Prophet tanto en Python como en R.

PASO 1. Cargar los paquetes necesarios:

#| label: python-required-packages
import pandas as pd
import numpy as np
from prophet import Prophet
import matplotlib.pyplot as plt

PASO 2. Cargar y transformar datos:

#| label: python-load-data
# Cargar el conjunto de datos AirPassengers
air_passengers = pd.read_csv("https://raw.githubusercontent.com/kassambara/datarium/refs/heads/main/data-raw/AirPassengersDf.csv")

# Convierta los valores de tiempo a un formato de fecha adecuado
df = pd.DataFrame({
    'ds': pd.to_datetime(air_passengers['Month']), 
    'y': air_passengers['Passengers']
})
df.head()
          ds    y
0 1949-01-01  112
1 1949-02-01  118
2 1949-03-01  132
3 1949-04-01  129
4 1949-05-01  121
Nota

El conjunto de datos AirPassengers contiene datos mensuales sobre el número de pasajeros.

PASO 3. Ajustar el modelo Prophet:

#| label: python-prophet-fit
# Ajustar el modelo Prophet
model = Prophet()
model.fit(df)

PASO 4. Realizar predicciones futuras:

#| label: python-make-forecast
# Crear un marco de datos para predicciones futuras (próximos 12 meses)
future = model.make_future_dataframe(periods=12, freq='MS')
forecast = model.predict(future)

PASO 5. Trazar la previsión:

#| label: python-plot-forecast
# Trazar la predicción
fig = model.plot(forecast)
plt.show()

Python Prophet Forecast

PASO 6. Trazar los componentes de la previsión:

Nota

Esto mostrará la tendencia, la estacionalidad y los efectos de los días festivos en la previsión.

#| label: python-plot-components
# Trazar los componentes de la previsión
fig = model.plot_components(forecast)
plt.show()

Componentes de la previsión con Python Prophet

PASO 1. Cargar los paquetes necesarios:

#| label: r-required-packages
library(prophet)

PASO 2. Cargar y transformar datos:

#| label: r-load-data
# Cargar el conjunto de datos AirPassengers
air_passengers <- read.csv("https://raw.githubusercontent.com/kassambara/datarium/refs/heads/main/data-raw/AirPassengersDf.csv")

# Convierta los valores de tiempo a un formato de fecha adecuado
df <- data.frame(
  ds = as.Date(air_passengers$Month), 
  y = as.numeric(air_passengers$Passengers)
  )
head(df)
          ds   y
1 1949-01-01 112
2 1949-02-01 118
3 1949-03-01 132
4 1949-04-01 129
5 1949-05-01 121
6 1949-06-01 135
Nota

El conjunto de datos AirPassengers contiene datos mensuales sobre el número de pasajeros.

PASO 3. Ajustar el modelo Prophet:

#| label: r-prophet-fit
# Ajustar el modelo Prophet
model <- prophet(df)
Nota

Prophet detectará la estacionalidad mensual a partir del conjunto de datos y desactivará la estacionalidad diaria y semanal de forma predeterminada.

Puede ejecutar prophet() con weekly.seasonality = TRUE o daily.seasonality = TRUE para anular este comportamiento.

PASO 4. Realizar predicciones futuras:

El modelo se ha entrenado con datos históricos desde 1949 hasta 1960. Ahora generaremos previsiones para los próximos 12 meses (1961).

#| label: r-make-forecast
# Crear un marco de datos para predicciones futuras (próximos 12 meses)
future <- make_future_dataframe(model, periods = 12, freq = "month")
# Realizar predicciones
forecast <- predict(model, future)

PASO 5. Trazar la previsión:

#| label: r-plot-forecast
# Trazar la predicción
plot(model, forecast)

Predicción R Prophet

PASO 6. Trazar los componentes de la previsión:

Nota

Esto mostrará la tendencia, la estacionalidad y los efectos de los días festivos en la previsión.

#| label: r-plot-components
# Trazar los componentes de la previsión
prophet_plot_components(model, forecast)

Componentes de la previsión de R Prophet

Discusión

Preparación de datos

Ambos ejemplos utilizan el conjunto de datos AirPassengers, que contiene datos mensuales sobre el número de pasajeros.

Ajuste de modelos y previsión

Ambos ejemplos utilizan Prophet para ajustar un modelo y generar previsiones. Los flujos de trabajo son muy similares, lo que demuestra cómo la interoperabilidad entre lenguajes puede proporcionar flexibilidad a la hora de elegir las herramientas en función de sus necesidades específicas.

Visualización

Cada ejemplo concluye con una visualización de la previsión. En Python, utilizamos Matplotlib a través de la función de trazado integrada en Prophet, mientras que en R, la función de trazado de Prophet crea un resultado visual similar.

Recursos adicionales

Si le interesa explorar conjuntos de datos de series temporales de diferentes campos, le recomendamos que eche un vistazo a la biblioteca tsdl en GitHub. Proporciona una colección diversa de datos de series temporales, que pueden ser muy valiosos para probar y comparar modelos de predicción.

Conclusión

Al comparar estos ejemplos uno al lado del otro, puede ver que Facebook Prophet ofrece un enfoque coherente para la previsión de series temporales tanto en Python como en R. Esto le permite elegir el entorno que mejor se adapta a su flujo de trabajo general de ciencia de datos sin sacrificar la funcionalidad ni el rendimiento.

Lecturas adicionales

Feliz programación y disfrute de la previsión de sus datos de series temporales con Prophet!

Explorar más artículos

Nota

Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.

Volver arriba

Reutilización

Cómo citar

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Análisis de series temporales en Python y R},
  date = {2024-02-12},
  url = {https://www.datanovia.com/es/learn/programming/r/cross-programming/time-series-analysis-in-python-and-r.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Kassambara, Alboukadel. 2024. “Análisis de series temporales en Python y R.” February 12, 2024. https://www.datanovia.com/es/learn/programming/r/cross-programming/time-series-analysis-in-python-and-r.html.