7ac69ab4fb
Bloque del grupo eda (sesion ausente EDA-benchmark): - 8 funciones nuevas: adf_kpss_stationarity, acf_pacf, stl_decompose, to_returns, fdr_correction, suggest_reexpression, exploratory_caveats, render_eda_pdf - integracion: profile_table (run_series, emit_pdf), association_matrix (FDR Benjamini-Hochberg), render_eda_markdown (secciones series/reexpresion/caveats) - slash commands /eda y /capitulos - issues 0173-0177: mejoras del /eda derivadas del benchmark sobre 12 datasets reales (outlier_pct x100, periodo estacional, FK inference, render models, tipos id-like) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.9 KiB
3.9 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| acf_pacf | function | py | datascience | 1.0.0 | pure | def acf_pacf(values: list, nlags: int = 40, alpha: float = 0.05) -> dict | Autocorrelacion (ACF) y autocorrelacion parcial (PACF) de una serie temporal con sus bandas de confianza (statsmodels), mas el test Ljung-Box de autocorrelacion global. Devuelve listas acf/pacf, sus intervalos, los lags significativos y un flag is_autocorrelated. Clave: una serie autocorrelacionada viola IID, asi que los p-valores de una regresion OLS estandar sobre ella estan inflados (Lopez de Prado). Descarta None/NaN; <8 puntos validos -> nota. |
|
false |
|
|
dict con 'acf' y 'pacf' (listas, indice 0 = lag 0), 'acf_confint'/'pacf_confint' (banda por lag), 'significant_acf_lags'/'significant_pacf_lags' (lags >=1 fuera de banda), 'ljung_box' (stat, p_value, lags) e 'is_autocorrelated' (bool: Ljung-Box rechaza independencia). Con <8 puntos: {'n', 'note', 'is_autocorrelated': None}. Nunca lanza excepcion. | true |
|
python/functions/datascience/acf_pacf_test.py | python/functions/datascience/acf_pacf.py |
Ejemplo
from datascience import acf_pacf
import numpy as np
# Ruido blanco: sin autocorrelacion (Ljung-Box no rechaza independencia)
rng = np.random.default_rng(0)
ruido = rng.normal(0, 1, 500).tolist()
acf_pacf(ruido)["is_autocorrelated"] # -> False
# Proceso AR(1) fuerte: autocorrelado, lag 1 significativo en PACF
ar = [0.0]
for _ in range(500):
ar.append(0.8 * ar[-1] + rng.normal(0, 1))
res = acf_pacf(ar)
res["is_autocorrelated"] # -> True
res["significant_pacf_lags"][:1] # -> [1]
Cuando usarla
Para diagnosticar la estructura de dependencia temporal de una serie: identificar
el orden de un modelo ARIMA (PACF corta en el orden AR, ACF corta en el orden MA),
o detectar estacionalidad (picos en lags estacionales). Y, critico para EDA: antes
de meter una variable temporal en una regresion, comprueba is_autocorrelated. Si
es True, la serie no es IID y los p-valores de OLS estandar estan inflados — hay
que usar errores estandar robustos (Newey-West) o modelar la dinamica
explicitamente (Lopez de Prado).
Gotchas
- Es pura pero importa
statsmodelsynumpy(ambos enpython/.venv). acf[0]ypacf[0]valen siempre 1.0 (autocorrelacion de la serie consigo misma en lag 0). Los lags interesantes empiezan en el indice 1.nlagsse recorta automaticamente: PACF exigenlags < n/2. Si pides 40 lags sobre una serie de 30 puntos,nlagsefectivo baja — mira el camponlagsdel resultado para saber cuantos se calcularon.- Las bandas de confianza asumen ruido blanco bajo H0; en una serie con tendencia muchos lags saldran "significativos" por la propia tendencia, no por estructura ARMA. Estaciona primero (ver adf_kpss_stationarity / to_returns).
- Ljung-Box es un test global (todos los lags juntos); los lags individuales significativos te dicen DONDE esta la autocorrelacion.