Estacionariedad en Python
Casi todo modelo de series de tiempo la asume: prueba y diferencia primero.
import numpy as np
from statsmodels.tsa.stattools import adfuller, kpss
rng = np.random.default_rng(12)
caminata = np.cumsum(rng.normal(size=300))
estadistico, p, rezagos, nobs, criticos, _ = adfuller(caminata)
print(round(estadistico, 3), round(p, 4), "no estacionaria" if p > 0.05
else "estacionaria")
print({k: round(v, 2) for k, v in criticos.items()})
diferenciada = np.diff(caminata)
print(round(adfuller(diferenciada)[1], 6))
print(round(kpss(diferenciada, nlags="auto")[1], 4))
Cómo funciona
adfullerprueba la nula de que la serie no es estacionaria.- Una tendencia hace fallar la prueba; diferenciar suele arreglarlo.
kpssprueba la nula opuesta, y por eso la gente corre ambas.
Palabras clave y builtins usados aquí
aselseforifprintround
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 488
- Tokens
- 150
- Ritmo de tres estrellas
- 115 tpm
Al ritmo de tres estrellas de 115 tokens por minuto, este intento toma unos 78 segundos.
Paso 2 de 6 en Series de tiempo; paso 14 de 19 en Estadística con statsmodels.