El análisis de series temporales es una técnica ampliamente utilizada en el aprendizaje automático para predecir valores futuros basados en datos históricos. Una de las herramientas más comunes y poderosas en el análisis de series de tiempo es el promedio móvil. Un promedio móvil es un cálculo que promedia un conjunto de valores durante un período de tiempo específico y se puede usar para suavizar las fluctuaciones en los datos e identificar tendencias.
En este blog, exploraré cómo se pueden usar los promedios móviles en el análisis de series de tiempo y demostraré cómo calcular y trazar promedios móviles simples y ponderados en Python.
El conjunto de datos Sunspots contiene números anuales de manchas solares desde 1700 hasta 2008. Se usa ampliamente en el análisis de series temporales, ya que es un buen ejemplo de un conjunto de datos que muestra periodicidad y tendencias a largo plazo. El conjunto de datos está disponible en el statsmodels
biblioteca, que se puede cargar en un marco de datos de pandas usando el load_pandas()
función.
Promedio móvil simple:
También te puede interesarProcesamiento de lenguaje natural para correos electrónicosEl promedio móvil simple (SMA) es la forma más básica de promedio móvil y se calcula tomando el promedio de un conjunto de valores durante un período de tiempo específico. El tamaño de la ventana para la SMA generalmente se elige en función de la frecuencia de los datos y debe ser lo suficientemente largo para suavizar las fluctuaciones, pero lo suficientemente corto como para capturar cualquier tendencia en los datos.
En Python, puedo calcular la SMA usando el rolling()
función en pandas. Aquí hay un ejemplo de cómo calcular y trazar un SMA de 11 años para el conjunto de datos Sunspots:
import pandas as pd
import statsmodels.api as sm# Load the dataset into a pandas dataframe
data = sm.datasets.sunspots.load_pandas().data
# Convert the index to a datetime object
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
También te puede interesarAhora puede usar la búsqueda basada en Bing AI en Android e iOS# Calculate the SMA using the rolling() function in pandas
window_size = 11
sma = data['SUNACTIVITY'].rolling(window=window_size).mean()
# Plot the original data and the SMA
data.plot(figsize=(12,6))
sma.plot()
En este ejemplo, cargo el conjunto de datos Sunspots en un marco de datos de pandas y convierto el índice en un objeto de fecha y hora. Luego calculamos la SMA usando el rolling()
función en pandas, con un tamaño de ventana de 11 que indica una SMA de 11 años. Finalmente, graficamos los datos originales y el SMA usando el plot()
función en pandas.
Promedio móvil ponderado:
También te puede interesarLos 5 mejores proyectos de ciencia de datos de principiantes a profesionales en PythonEl promedio móvil ponderado (WMA) es una forma más avanzada de promedio móvil que asigna diferentes pesos a cada valor en el período de tiempo, según su importancia relativa. Esto permite que la WMA le dé más peso a los puntos de datos recientes y menos peso a los puntos de datos más antiguos, lo que puede hacer que responda mejor a los cambios en los datos.
En Python, puedo calcular el WMA usando el rolling()
función en pandas y una función lambda para aplicar los pesos a los datos. Aquí hay un ejemplo de cómo calcular y trazar un WMA de 11 años para el conjunto de datos Sunspots:
import pandas as pd
import numpy as np
import statsmodels.api as sm# Load the dataset into a pandas dataframe
data = sm.datasets.sunspots.load_pandas().data
# Convert the index to a datetime object
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
También te puede interesarChatGPT vs BARD: La batalla de los asistentes de IA# Define the weights for the WMA
weights = np.arange(1, 12)
weights = weights / weights.sum()
# Calculate the WMA using the rolling() function in pandas
wma = data['SUNACTIVITY'].rolling(window=11).apply(lambda x: (x * weights).sum(), raw=True)
# Plot the original data and
data.plot(figsize=(12,6))
wma.plot()
En este ejemplo, cargo el conjunto de datos Sunspots en un marco de datos de pandas y convierto el índice en un objeto de fecha y hora. Luego defino los pesos para el WMA usando el np.arange()
y sum()
funciones en numpy. Los pesos se asignan de manera que el punto de datos más reciente tenga el peso más alto y el punto de datos más antiguo tenga el peso más bajo. Luego calculo el WMA usando el rolling()
función en pandas y una función lambda para aplicar los pesos a los datos. El raw=True
El argumento se utiliza para garantizar que el WMA se calcule utilizando los datos no ponderados. Finalmente, trazo los datos originales y el WMA usando el plot()
función en pandas.
Conclusión:
Los promedios móviles son una herramienta poderosa en el análisis de series de tiempo que se pueden usar para suavizar las fluctuaciones en los datos e identificar tendencias. Los promedios móviles simples (SMA) y los promedios móviles ponderados (WMA) son las dos formas de promedios móviles más utilizadas. Cuando se trabaja con datos de series temporales, es importante elegir el tamaño de ventana adecuado para la media móvil, en función de la frecuencia de los datos y el nivel deseado de suavizado. También es importante tener en cuenta el equilibrio entre la suavización y la capacidad de respuesta al elegir entre una media móvil simple y una media móvil ponderada.
[post_relacionado id=»1714″]