typestar

Descomposición estacional en Python

Separar una serie en tendencia, estación y lo que queda.

import numpy as np
import pandas as pd
from statsmodels.tsa.seasonal import STL, seasonal_decompose

index = pd.date_range("2026-01-01", periods=180, freq="D")
rng = np.random.default_rng(13)
estacion = 8 * np.sin(2 * np.pi * np.arange(180) / 30)
serie = pd.Series(90 + np.arange(180) * 0.05 + estacion
                   + rng.normal(0, 1.5, 180), index=index)

clasico = seasonal_decompose(serie, period=30)
print(round(float(clasico.trend.dropna().iloc[0]), 2))
print(round(float(clasico.seasonal.abs().max()), 2))

stl = STL(serie, period=30).fit()
print(round(float(stl.resid.std()), 3), round(float(stl.trend.iloc[-1]), 2))

Cómo funciona

  1. seasonal_decompose necesita el período.
  2. STL es la versión más robusta, basada en loess.
  3. El residuo es lo que a un modelo aún le falta explicar.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
610
Tokens
210
Ritmo de tres estrellas
115 tpm

Al ritmo de tres estrellas de 115 tokens por minuto, este intento toma unos 110 segundos.

Escribe este fragmento

Paso 3 de 6 en Series de tiempo; paso 15 de 19 en Estadística con statsmodels.

← Anterior Siguiente →