lección 4
Autocorrelación: el pasado que se repite
ACF y PACF: qué miden, cómo se leen, y qué pistas dan sobre el periodo estacional y los parámetros de un modelo de predicción.
⏱ 50 min
Ya conoces la correlación: ese número entre -1 y 1 que mide cómo de juntas se mueven dos variables. Si la altura y el peso suben juntos, su correlación es positiva y alta. Ahora hazte una pregunta rara: ¿qué correlación tiene una serie temporal consigo misma? A primera vista, uno: una serie es idéntica a sí misma, obviamente se mueven juntas. Pero la pregunta se vuelve interesante en cuanto la desplazas: ¿qué correlación tiene la serie con una copia de sí misma retrasada un día? ¿Y retrasada siete días? ¿Y un año? Esa correlación de una serie con versiones retrasadas de sí misma es la autocorrelación, y es la huella dactilar de una serie temporal: te dice cuánta memoria tiene, cada cuánto se repite y qué forma debe tener el modelo que la prediga.
La idea de desplazar una serie para compararla consigo misma suena abstracta, pero la usas sin darte cuenta todo el tiempo. Cuando dices "las ventas de hoy se parecen a las de ayer", estás afirmando que la autocorrelación a un día de retraso es alta. Cuando dices "los lunes se parecen entre sí", estás afirmando que la autocorrelación a siete días de retraso es alta. Lo que vamos a hacer ahora es poner un número a esas intuiciones y, sobre todo, aprender a leer dos gráficos —el de la función de autocorrelación y el de la autocorrelación parcial— que resumen de un vistazo toda la memoria de una serie y que son la última herramienta de diagnóstico antes de construir un modelo.
La idea tiene algo más de un siglo y nació de un problema concreto. En 1927, el estadístico británico Udny Yule estaba intentando entender el número de manchas solares, que sube y baja en olas de unos once años, y se topó con que las herramientas de la época no servían: trataban cada observación como independiente, cuando era evidente que el número de este año estaba atado al del anterior. Yule propuso describir cada valor como una combinación de los valores pasados más un empujón aleatorio, y con esa idea sencilla fundó buena parte de lo que hoy es el modelado de series. Medio siglo después, en 1970, George Box y Gwilym Jenkins reunieron todas estas piezas —estacionariedad, diferenciación, autocorrelación— en un método ordenado y práctico que se sigue enseñando con sus nombres. La autocorrelación es la pieza central de ese método, y entenderla es entender cómo una serie se predice a sí misma.
## El retraso: desplazar la serie sobre sí misma
El concepto base es el retraso —en inglés, lag—: cuántos pasos desplazas la serie para compararla consigo misma. La autocorrelación con retraso 1 compara cada valor con el inmediatamente anterior; la de retraso 7, cada valor con el de siete pasos atrás; la de retraso 12, con el de doce atrás. Para calcularla, imagina que haces dos columnas: en una pones la serie, y al lado pones la misma serie corrida hacia abajo tantas posiciones como el retraso. Donde antes había un hueco al principio, ahora hay valores emparejados: cada día junto al día de hace una semana, por ejemplo. Y a esas dos columnas emparejadas les calculas la correlación normal, la de toda la vida. El resultado es la autocorrelación para ese retraso.
Lo interesante es qué pasa cuando calculas la autocorrelación para muchos retrasos seguidos —1, 2, 3... hasta 30 o 40— y los dibujas todos en un gráfico de barras. Ese gráfico se llama la función de autocorrelación, o ACF por sus siglas en inglés, y la forma que dibujan sus barras cuenta la historia de la serie. Una barra alta en el retraso 1 dice que cada valor se parece mucho al anterior. Una barra alta en el retraso 7 que asoma por encima de las vecinas dice que hay un patrón que se repite cada siete pasos: estacionalidad semanal. El patrón de alturas de las barras es un retrato de la memoria de la serie.
## Leer un correlograma: las barras y las bandas
El gráfico de la ACF —también llamado correlograma— tiene siempre la misma estructura, y leerlo es una habilidad que vale la pena automatizar. En el eje horizontal van los retrasos: 0, 1, 2, 3... En el vertical, la autocorrelación de cada retraso, entre -1 y 1. La barra del retraso 0 siempre vale 1 y se ignora: es la serie comparada consigo misma sin desplazar, que trivialmente es idéntica. Lo que miras son las barras del retraso 1 en adelante. Y sobre todo el gráfico hay una banda sombreada, normalmente alrededor del cero, que es la clave para no engañarse: es el margen de lo que podría ser pura casualidad.
Esa banda es un intervalo de significación. Cualquier barra que se quede dentro de la banda es, estadísticamente, indistinguible de cero: esa autocorrelación podría haber salido por azar aunque no exista ninguna relación real a ese retraso. Solo las barras que sobresalen de la banda —por arriba o por abajo— representan autocorrelaciones de verdad, que no se explican por casualidad. Esta distinción es exactamente la misma idea que usas al decidir si un efecto es real o es ruido: la banda es el umbral que separa la señal del azar. Al leer un correlograma, tu ojo tiene que ir directo a qué barras salen de la banda y en qué retrasos, e ignorar todo lo que se queda dentro.
Dos patrones de la ACF cuentan historias muy distintas. Si las barras caen despacio, suavemente, cada una un poco más baja que la anterior a lo largo de muchos retrasos, es la firma de una tendencia o de una serie no estacionaria: todo se parece a todo porque la serie se mueve en bloque. Si las barras caen rápido —una o dos altas y el resto dentro de la banda— es una serie con memoria corta, que ya es estacionaria. Y si hay una barra que sobresale justo en el retraso 7, o en el 12, o en el que sea tu periodo, y vuelve a sobresalir en el 14, el 24, los múltiplos, eso es estacionalidad gritando desde el gráfico: la serie se parece a sí misma cada vez que pasa un periodo completo.
## La autocorrelación parcial: quitar el efecto de en medio
La ACF tiene un problema sutil que hay que entender, porque es la razón de que exista su hermana. Supón que cada día influye en el siguiente. Entonces el lunes influye en el martes, y el martes en el miércoles. Cuando mides la autocorrelación del lunes con el miércoles —retraso 2— sale alta, pero esa relación no es directa: el lunes influye en el miércoles solo porque arrastró al martes por el camino. La ACF no distingue entre la influencia directa y la que viaja de rebote a través de los días intermedios. Y para elegir bien un modelo, necesitas saber cuánta memoria DIRECTA tiene la serie, sin los rebotes.
Para eso está la función de autocorrelación parcial, o PACF. La PACF mide la correlación entre un valor y el de hace k pasos quitando el efecto de todos los pasos intermedios. La autocorrelación parcial a retraso 2 responde: "¿cuánto se parece el miércoles al lunes, una vez descontado lo que el lunes le pasó al miércoles a través del martes?". Es la influencia directa y limpia, sin los rebotes. Y esa limpieza es justo lo que necesitas para leer la estructura real de dependencia de la serie, porque el modelo trabaja con relaciones directas, no con las que viajan de rebote.
En la práctica usas los dos gráficos juntos y cada uno te dice una cosa distinta, y aquí está la utilidad concreta que convierte todo esto en una receta. El patrón de la PACF —en qué retraso se corta en seco, dejando de salir de la banda— sugiere cuánta memoria directa tiene la serie, lo que orienta uno de los parámetros de un modelo de predicción. El patrón de la ACF —cómo decae y dónde se corta— orienta otro. No hace falta memorizar las reglas exactas ahora; lo que importa es entender la lógica: estos dos gráficos no son adorno estadístico, son el instrumento que convierte "esta serie tiene memoria" en números concretos que configuran un modelo.
1import numpy as np2import pandas as pd3from statsmodels.tsa.stattools import acf, pacf45# Serie con estacionalidad semanal: cada 7 dias se parece a si misma6np.random.seed(42)7n = 1408patron_semanal = np.array([10, 4, 2, 3, 5, 15, 20]) # pico el sabado (indice 5-6)9serie = pd.Series(np.tile(patron_semanal, 20) + np.random.normal(0, 1, n))1011# ACF y PACF hasta el retraso 14 (dos semanas)12valores_acf = acf(serie, nlags=14)1314# La autocorrelacion del retraso 7 debe destacar sobre sus vecinos (6 y 8)15pico_en_7 = valores_acf[7] > valores_acf[6] and valores_acf[7] > valores_acf[8]16# Y debe repetirse en el 14 (segundo multiplo del periodo)17pico_en_14 = valores_acf[14] > valores_acf[13]18print(f"La ACF tiene un pico en el retraso 7: {pico_en_7}")19print(f"Y vuelve a destacar en el retraso 14: {pico_en_14}")20print(f"Periodo estacional detectado: 7")
acf devuelve la autocorrelación de cada retraso; se comprueba que destaca en los múltiplos del periodo, no sus valores crudos
Consejo de senior: la ACF es el detector de estacionalidad más rápido que tienes. Cuando te llega una serie y no sabes cuál es su periodo —si se repite cada 7 pasos, cada 12, cada 24—, no lo adivines ni lo supongas por el tipo de dato: dibuja la ACF y mira en qué retraso aparece el primer pico que sobresale y se repite en sus múltiplos. Ese retraso es el periodo. Es más fiable que razonar "son datos diarios así que será semanal", porque a veces la estacionalidad real no es la que esperas, y el correlograma te la enseña sin que tengas que acertar de antemano.
## De los correlogramas a los parámetros del modelo
Aquí es donde todo esto deja de ser diagnóstico y se vuelve receta. Los modelos clásicos de series temporales se construyen con dos mecanismos para capturar la memoria, y cada uno deja una firma distinta en los dos correlogramas. El primer mecanismo predice el valor de hoy a partir de los valores anteriores directamente: hoy depende de ayer, de anteayer, de hace tres días. A ese componente se le llama autorregresivo, y lo que controla cuántos días hacia atrás se miran es un parámetro, un número entero. El segundo mecanismo predice el valor de hoy a partir de los errores de las predicciones anteriores —de cuánto te equivocaste ayer, anteayer—, y se le llama de media móvil, con su propio parámetro. Un modelo típico combina los dos, y configurarlo es decidir esos dos números.
La gracia es que la ACF y la PACF, leídas juntas, sugieren esos dos números sin que tengas que probar a ciegas. La regla que usan los profesionales es un cruce entre las dos: cuando la PACF se corta en seco después de unos pocos retrasos y la ACF decae poco a poco, la serie es sobre todo autorregresiva, y el retraso donde se corta la PACF sugiere su parámetro. Cuando ocurre lo contrario —la ACF se corta en seco y la PACF decae despacio—, la serie es sobre todo de media móvil, y el corte de la ACF sugiere ese parámetro. Si las dos decaen despacio, hay un poco de cada uno. No hace falta que memorices esta tabla ahora; lo que importa es ver que los dos gráficos que has aprendido a leer no son un ejercicio académico: son el instrumento que convierte la forma de la memoria de una serie en los números concretos que configuran su modelo.
Este es un buen momento para una dosis de honestidad, que es la vacuna de este oficio. Leer un correlograma para elegir los parámetros de un modelo es parte arte y parte ciencia: dos personas con experiencia pueden mirar las mismas barras y proponer parámetros ligeramente distintos, y las dos propuestas pueden ser razonables. Por eso en la práctica el correlograma no da la respuesta final, da un punto de partida informado: te dice en qué vecindario buscar, y luego se prueban unas pocas combinaciones cercanas y se comparan con honestidad, midiendo cuál predice mejor sobre datos que el modelo no ha visto. Igual que con cualquier otro modelo, la última palabra no la tiene el gráfico de diagnóstico: la tiene la validación sobre el futuro reservado, partido por el calendario como aprendiste que hay que partir una serie.
Leer la ACF o la PACF de una serie no estacionaria lleva a conclusiones falsas. Si la serie tiene tendencia, la ACF decae tan despacio que tapa cualquier otro patrón: no verás la estacionalidad aunque esté, porque la tendencia domina todas las barras. Por eso el orden es sagrado: primero haces la serie estacionaria (diferenciando si hace falta), y solo entonces lees los correlogramas. Mirar la ACF antes de comprobar la estacionariedad es como medir la temperatura con el termómetro al sol: el número sale, pero no mide lo que crees.
## El flujo completo: de la serie cruda al modelo
Ahora tienes todas las piezas del diagnóstico de una serie temporal, y encajan en un orden que no es casual. Primero miras la serie y la separas en sus componentes para entender qué tiene dentro: tendencia, estacionalidad, ruido. Después compruebas si es estacionaria y, si no lo es, la diferencias hasta que lo sea, apuntando cuántas veces. Por último, sobre la serie ya estacionaria, lees la ACF y la PACF para medir su memoria y detectar su periodo. Al final de ese recorrido tienes tres cosas que un modelo de predicción necesita: sabes su estacionalidad, sabes cuántas diferenciaciones pide, y sabes la forma de su dependencia. Has convertido una serie cruda en un diagnóstico completo.
Y aquí es donde cierra todo lo que has aprendido a lo largo de esta profesión. Igual que con cualquier otro problema de datos, el camino no empezó por el algoritmo: empezó por entender el dato, mirar su forma, respetar sus reglas y desconfiar de los atajos. Una serie temporal no se diferencia en eso del resto. Pediste primero la línea base —la media de ayer, el valor del mismo día del año pasado— antes de pensar en nada sofisticado. Separaste la señal del ruido antes de intentar predecir. Partiste los datos de forma honesta, por el tiempo, para no engañarte con un futuro que no existe todavía. Y comprobaste cada afirmación en lugar de creértela. Esa manera de trabajar —medir con cuidado, dudar de lo que sale demasiado bien, y no dar por bueno un resultado hasta que ha sobrevivido a un intento serio de tumbarlo— no es de las series temporales ni de ningún modelo concreto. Es el oficio entero. Lo que viene después, sea el modelo que sea y el problema que sea, se construye sobre esa base.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...
Regístrate para guardar tu progreso.