En Parte 3.1 Comenzamos a discutir cómo descompone los datos de la serie temporal en tendencia, estacionalidad y componentes residuales, y como es una técnica basada en suavizado, significa que necesitamos estimaciones aproximadas de tendencia y estacionalidad para que STL realice un suavizado.
Para eso, calculamos una estimación aproximada de una tendencia al calcularla utilizando el método de promedios móviles centrados, y luego al usar esta tendencia inicial, también calculamos la estacionalidad inicial. (Las matemáticas detalladas se discuten en Parte 3.1)
En esta parte, implementamos el Método de Loess (suavizado de planificación de dispersión) localmente junto para obtener la tendencia final y los componentes estacionales de la serie temporal.
Al final de la Parte 3.1, tenemos los siguientes datos:
Como tenemos el componente estacional centrado, el siguiente paso es restar esto de la serie temporal original para obtener la serie desasonalizada.
Obtuvimos la serie de valores desasonalizados, y sabemos que esto contiene tendencia y componentes residuales.
Ahora aplicamos Loess (suavizado de diagrama de dispersión estimado localmente) en esta serie desasionalizada.
Aquí, nuestro objetivo es comprender el concepto y las matemáticas detrás de la técnica Loess. Para hacer esto, consideramos un solo punto de datos de la serie desazonalizada e implementamos a loess paso a paso, observando cómo cambia el valor.
Antes de comprender las matemáticas detrás del Loess, tratamos de entender lo que realmente se hace en el proceso de suavizado de Loess.
Loess es el proceso similar a la regresión lineal simple, pero la única diferencia aquí es que asignamos pesos a los puntos de modo que los puntos más cercanos al punto objetivo obtienen más peso y más lejos del punto objetivo obtienen menos peso.
Podemos llamarlo una regresión lineal simple ponderada.
Aquí el punto objetivo es el punto en el que se realiza el suavizado de Loess y, en este proceso, seleccionamos un valor alfa que varía entre 0 y 1.
Principalmente usamos 0.3 o 0.5 como valor alfa.
Por ejemplo, digamos alfa = 0.3, lo que significa que el 30% de los puntos de datos se usan en esta regresión, lo que significa que si tenemos 100 puntos de datos, entonces 15 puntos antes del punto de destino y 15 puntos después del punto de destino (incluido el punto de destino) se usan en este proceso de suavizado.
Al igual que con la regresión lineal simple, en este proceso de suavizado, ajustamos una línea a los puntos de datos con pesos adicionales.
Agregamos pesos a los puntos de datos porque ayuda a la línea a adaptarse al comportamiento local de los datos e ignorar las fluctuaciones o valores atípicos, ya que estamos tratando de estimar el componente de tendencia en este proceso.
Ahora tenemos una idea de que en el proceso de suavizado de Loess se ajustamos a una línea que mejor se ajusta a los datos y de eso calculamos el valor suavizado en el punto de destino.
A continuación, implementaremos el suavizado de Loess tomando un solo punto como ejemplo.
Tratemos de entender lo que realmente se hace en Loess suavizando al tomar un solo punto como ejemplo.
Considere 01-08-2010, aquí el valor desasonalizado es 14751.02.
Ahora para comprender las matemáticas detrás de Loess fácilmente, consideremos un lapso de cinco puntos.
Aquí el tramo de cinco puntos significa que consideramos los puntos más cercanos al punto objetivo (1-8-2010), incluido el punto objetivo.
Para demostrar el suavizado de Loess en agosto de 2010, consideramos los valores desde junio de 2010 hasta octubre de 2010.
Aquí los valores de índice (a partir de cero) son de los datos originales.
El primer paso en el suavizado de Loess es que calculamos las distancias entre el punto objetivo y los puntos vecinos.
Calculamos esta distancia en función de los valores del índice.
Calculamos las distancias y la distancia máxima desde el punto de destino es ‘2’.
Ahora, el siguiente paso en el suavizado de Loess es calcular los pesos de Tricube, Loess asigna pesos a cada punto en función de las distancias escaladas.
Aquí los pesos de tricube para 5 puntos están [0.00, 0.66, 1.00, 0.66, 0.00].
Ahora que hemos calculado los pesos de Tricube, el siguiente paso es realizar una regresión lineal simple ponderada.
Las fórmulas son similares como SLR con promedios habituales reemplazados por promedios ponderados.
Aquí está la matemática paso a paso del paso a paso para calcular el valor suavizado de Loess en t = 7.
Aquí la estimación de la tendencia de Loess en agosto de 2010 es 14212.96, que es menor que el valor desasonalizado de 14751.02.
En nuestra ventana de 5 puntos, si vemos los valores de los meses vecinos, podemos observar que los valores están disminuyendo, y el valor de agosto parece un salto repentino.
Loess intenta adaptarse a una línea que mejor se ajuste a los datos que representan la tendencia local subyacente; Alise los picos o salsas afiladas y nos da un verdadero comportamiento local de los datos.
Así es como Loess calcula el valor suavizado para un punto de datos.
Para nuestro conjunto de datos cuando implementamos la descomposición de STL usando Python, el valor alfa puede estar entre 0.3 y 0.5 en función del número de puntos en el conjunto de datos.
También podemos probar diferentes valores alfa y ver cuál representa los datos mejor y seleccionar los apropiados.
Este proceso se repite para cada punto de los datos.
Una vez que obtenemos el componente de tendencia suavizado de Loess, se resta de la serie original para aislar la estacionalidad y el ruido.
A continuación, seguimos el mismo procedimiento de suavizado de Loess a través de la subserie estacional como todos los enero, febrero, etc. (como en la Parte 3.1) para obtener un componente estacional suavizado de Loess.
Después de obtener la tendencia suavizada de Loess y los componentes de estacionalidad, los restamos de las series originales para obtener el residual.
Después de esto, todo el proceso se repite para refinar aún más los componentes, la estacionalidad suavizada de Loess se resta de la serie original para encontrar la tendencia suavizada de Loess y esta nueva tendencia suavizada de Loess se resta de la serie original para encontrar la estacionalidad suavizada de Loess.
Esto podemos llamar como una iteración, y después de varias rondas de iteración (10-15), los tres componentes se estabilizan y no hay más cambios y STL devuelve la tendencia final, la estacionalidad y los componentes residuales.
Esto es lo que sucede cuando usamos el siguiente código para aplicar la descomposición STL en el conjunto de datos para obtener los tres componentes.
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import STL
# Load the dataset
df = pd.read_csv("C:/RSDSELDN.csv", parse_dates=['Observation_Date'], dayfirst=True)
df.set_index('Observation_Date', inplace=True)
df = df.asfreq('MS') # Ensure monthly frequency
# Extract the time series
series = df['Retail_Sales']
# Apply STL decomposition
stl = STL(series, seasonal=13)
result = stl.fit()
# Plot and save STL components
fig, axs = plt.subplots(4, 1, figsize=(10, 8), sharex=True)
axs[0].plot(result.observed, color='sienna')
axs[0].set_title('Observed')
axs[1].plot(result.trend, color='goldenrod')
axs[1].set_title('Trend')
axs[2].plot(result.seasonal, color='darkslategrey')
axs[2].set_title('Seasonal')
axs[3].plot(result.resid, color='rebeccapurple')
axs[3].set_title('Residual')
plt.suptitle('STL Decomposition of Retail Sales', fontsize=16)
plt.tight_layout()
plt.show()
Conjunto de datos: Este blog utiliza datos disponibles públicamente de Fred (datos económicos de la Reserva Federal). La serie Ventas minoristas anticipadas: grandes almacenes (RSDSELD) es publicado por la Oficina del Censo de EE. UU. Y puede usarse para el análisis y publicación con citas apropiadas.
Cita oficial:
Oficina del Censo de los Estados Unidos, Ventas minoristas anticipadas: grandes almacenes [RSDSELD]recuperado de Fred, Banco de la Reserva Federal de St. Louis; https://fred.stlouisfed.org/series/rsdseld7 de julio de 2025.
Nota: Todas las imágenes, a menos que se indique lo contrario, son por el autor.
Espero que tenga una idea básica de cómo funciona la descomposición de STL, desde calcular la tendencia inicial y la estacionalidad hasta encontrar componentes finales utilizando el suavizado de Loess.
Siguiente en la serie, discutimos ‘Estacionariedad de una serie de tiempo ‘ en detalle.
¡Gracias por leer!