La función de autocorrelación es un elemento clave al momento de analizar o de construir modelos para generar pronósticos de Series de Tiempo.
Básicamente, esta función contiene el resultado de realizar comparaciones de la Serie de Tiempo consigo misma, y la información que nos arroja nos permite, por ejemplo, detectar patrones dentro de la serie temporal y, en muchos casos, elegir el modelo predictivo más apropiado.
Así que en este artículo vamos a entender detalladamente qué es la función de autocorrelación, cómo interpretarla y cuáles son específicamente los usos prácticos que le podemos dar al momento de analizar o generar pronósticos sobre Series de Tiempo.
¿Qué es la correlación?
Antes de entender qué es la función de autocorrelación, debemos comprender el concepto matemático básico del cual se deriva: la correlación.
En esencia, la correlación es una operación matemática que nos permite cuantificar (es decir, ponerle números) al grado de relación que tienen dos variables numéricas. Cuando calculamos la correlación entre dos variables, vamos a obtener valores que oscilan entre -1 y 1:
- Correlación cercana a -1: nos indica que las variables están inversamente relacionadas. Es decir, mientras una variable aumenta, la otra disminuye.
- Correlación cercana a 1: en el otro extremo, significa que si una variable aumenta, la otra también lo hace de manera proporcional.
- Correlación cercana a 0: significa que las dos variables prácticamente no están relacionadas entre sí.
Para entender esta idea a fondo, desglosemos los elementos matemáticos que nos permiten calcular la correlación entre dos variables numéricas a través de un sencillo ejemplo.
Rigurosamente, el término dado a la ecuación que vemos abajo es el de correlación de Pearson:
Así que desglosemos los elementos de esta ecuación:
- $N$ es el número de datos que contiene cada variable
- $x$ y $y$ son las dos variables numéricas que vamos a comparar a través de la correlación
- En el numerador vemos que a cada valor en cada una de las variables ($x_i$, $y_i$) le restamos el promedio de la variable correspondiente ($\bar{x}$, $\bar{y}$).
- Luego multiplicamos estas diferencias individuales ($(x_i-\bar{x})$, $(y_i-\bar{y}$)) con lo cual estamos comparando término a término dichas diferencias. Esta es la operación clave en la correlación: estamos realizando comparaciones directas entre las variables.
- Y por último, sumamos estas comparaciones individuales y tenemos el numerador de la expresión anterior
- En el denominador tenemos las diferencias cuadráticas entre cada valor en cada variable y su correspondiente promedio ($(x_i-\bar{x})^2$, $(y_i-\bar{y})^2$).
- Estas diferencias cuadráticas se suman y a cada resultado individual le calculamos la raíz cuadrada (para mantener la escala original de los datos).
Así que en últimas tendremos:
- En el numerador: comparaciones entre pares de valores de las variables
- Y este resultado lo dividimos entre la expresión del denominador, que permite ajustar la escala para obtener finalmente valores entre -1 y 1 para la correlación
Ejemplo numérico del cálculo de la correlación
Así que teniendo clara la definición de la correlación de Pearson, veamos ahora un sencillo ejemplo numérico de cálculo.
Supongamos que queremos comparar dos variables, $x$ y $y$, ambas con $N=5$ datos:
- Variable $x$: 2, 8, 16, 5, 9
- Variable $y$: 1, 7, 9, 23, 5
Queremos ver qué tanto se parece la variable $x$ a la variable $y$ a través de la correlación. El procedimiento es el siguiente:
Paso 1: calcular el promedio de cada variable
- Para la variable $x$, sumamos los cinco números y los dividimos entre 5. Esto nos da:
$$\bar{x}=\frac{2+8+16+5+9}{5}=8$$
- Y repetimos el procedimiento anterior pero para la variable $y$:
$$\bar{y}=\frac{1+7+9+23+5}{5}=9$$
Paso 2: restar el promedio a cada dato
A cada término de la primera variable le restamos el promedio de su conjunto. Luego hacemos lo mismo para la segunda variable.
- Para $x$: (2-8), (8-8), (16-8), (5-8), (9-8). Obtenemos el arreglo: [-6, 0, 8, -3, 1]
- Para $y$: (1-9), (7-9), (9-9), (23-9), (5-9). Obtenemos el arreglo: [-8, -2, 0, 14, -4]
Paso 3: multiplicar término a término (comparación de variables)
Multiplicamos los dos arreglos resultantes término a término. Matemáticamente, multiplicar dos variables es una forma de compararlas:
- (-6 * -8) = 48
- (0 * -2) = 0
- (8 * 0) = 0
- (-3 * 14) = -42
- (1 * -4) = -4
El arreglo resultante de esta comparación es: [48, 0, 0, -42, -4].
Paso 4: sumar los resultados (numerador)
Sumamos los elementos de este nuevo arreglo: 48 + 0 + 0 – 42 – 4. Obtenemos un valor numérico de 2. Este será el numerador de nuestra ecuación de correlación.
Paso 5: calcular las desviaciones cuadráticas (denominador)
Para que el resultado de la comparación no dependa de la escala de los datos, debemos dividirlo entre las desviaciones de ambas variables. Para calcular el denominador, tomamos las diferencias individuales calculadas en el Paso 2 y las elevamos al cuadrado (así evitamos que valores positivos y negativos se anulen dando cero al sumarlos):
- Para $x$ al cuadrado: 36, 0, 64, 9, 1. La suma total de estas diferencias cuadráticas es 110.
- Para $y$ al cuadrado: 64, 4, 0, 196, 16. La suma total es 280.
Paso 6: extraer la raíz cuadrada y multiplicar
Dado que elevar al cuadrado cambió las unidades originales de las variables, aplicamos la raíz cuadrada a las sumas para restaurar la escala original:
- Raíz cuadrada de 110 = 10.48
- Raíz cuadrada de 280 = 16.73
Finalmente, multiplicamos estos dos resultados (10.48 * 16.73) obteniendo en el denominador el valor de 175.5.
Paso 7: Calcular el coeficiente de correlación final
Dividimos el numerador entre el denominador: 2 / 175.5 = 0.011.
Este grado de correlación (0.011) es muy cercano a 0, lo que quiere decir que las variables $x$ y $y$ prácticamente no tienen relación (o no están correlacionadas).
El salto a la autocorrelación
Teniendo claro qué es la correlación, nos queda muy fácil entender el concepto de autocorrelación. Como su nombre lo indica, la autocorrelación es simplemente el resultado de comparar una variable numérica consigo misma.
Si usamos la lógica del cálculo anterior, pero en lugar de comparar $x$ con $y$, comparamos la variable $x$ consigo misma, el procedimiento y los resultados en el numerador y denominador serán idénticos.
En nuestro ejemplo de la variable $x$, el numerador será la suma de las diferencias cuadradas (110). En el denominador, al calcular la raíz cuadrada de 110 y multiplicarla por la raíz cuadrada de 110, obtendremos de nuevo 110.
Al dividir 110 entre 110, ¡el resultado es 1!. Es decir, siempre que comparemos una variable exactamente consigo misma sin modificaciones, el valor de la autocorrelación será exactamente igual a 1.
La función de autocorrelación en Series de Tiempo
Y ahora podemos aprovechar estos conceptos de correlación y autocorrelación para definir lo que es la función de autocorrelación en una serie de tiempo.
La idea básica es bastante sencilla: lo que queremos en últimas es comparar la Serie de Tiempo original con versiones desplazadas de la misma serie.
Así, el índice de autocorrelación $r_k$ es el resultado de calcular la autocorrelación entre la Serie de Tiempo original ($y_t$) y la Serie de Tiempo pero desplazada k muestras (a esta versión desplazada nos referiremos como $y_{t-k}$). Y la ecuación para calcular este índice de autocorrelación tendrá una forma muy similar a la que vimos anteriormente para la correlación:
donde:
- $\bar{y}$ es el promedio de la Serie de Tiempo (y este promedio es el mismo bien sea que tomemos la serie original, $y_t$, o una versión desplazada k muestras, $y_{t-k}$)
- Y $\sum_t$ nos indica que el numerador y el denominador se calculan usando sumatorias para todos los instantes de tiempo en los que está definida la serie.
Observemos que en este caso el denominador tiene una expresión mucho más simple que en el caso de la correlación, pues en este caso estamos comparando la Serie con una versión desplazada de sí misma.
Y lo importante de todo esto, más allá de la definición matemática, es que éste índice de autocorrelación ($r_k$), es un número que mide qué tanto se parece la serie original a su versión desplazada $k$ muestras. Al calcular esto para múltiples valores de desplazamiento ($k$), obtenemos un conjunto de puntos que graficados conforman lo que se conoce la función de autocorrelación.
Así que veamos cómo se combinan todas las ideas que hemos visto hasta ahora en lo que es la función de autocorrelación.
Para esto, supongamos que tenemos una Serie de Tiempo original como la que se muestra a continuación:

Ahora, veamos qué características tiene esta Serie cuando la desplazamos $k$ diferentes instantes de tiempo hacia la derecha.
En la figura de abajo tenemos la serie original (en la parte de arriba) y el resultado de un desplazamiento con un valor $k=0$:

Como podemos ver, la Serie «desplazada» ¡realmente no tiene ningún desplazamiento!, puesto que k=0.
Si ahora calculamos el coeficiente de autocorrelación para este desplazamiento $k=0$ veremos que, como las dos Series (la original y la desplazada) coinciden perfectamente, el coeficiente $r_0$ resultante será exactamente igual a 1 (que es el máximo valor que podremos obtener):

Veamos ahora lo que ocurre cuando $k=1$. En este caso la Serie se desplaza una muestra a la derecha:

Si ahora repetimos el procedimiento para el cálculo del coeficiente de autocorrelación (en este caso $r_1$), veremos que, como ahora no hay perfecta coincidencia entre las dos series, el valor obtenido será menor que 1:

En este caso vemos que el coeficiente de autocorrelación es $r_1 = 0.15$ (es decir, hay un bajo nivel de similitud entre la Serie original y su versión desplazada 1 muestra).
Siguiendo la misma lógica de los ejemplos anteriores, veamos qué ocurre con $k=2$. En la figura de abajo vemos las dos Series de Tiempo (original y desplazada) junto con sus porciones coincidentes (sombreadas en rojo) así como el índice de autocorrelación correspondiente ($r_2 = 0.05$):

De la misma forma, en las siguientes dos figuras vemos los resultados de calcular los coeficientes de autocorrelación para desplazamientos de 3 ($r_3 = 0.18$) y 4 muestras ($r_4 = -0.34$):


Además, si observamos el comportamiento de la Serie desplazada, podemos verificar que para desplazamientos iguales o mayores a $k=5$ no tendremos solapamiento entre las dos Series a comparar. Así que podemos concluir que después de $k=5$ todos los valores de la función de autocorrelación serán exactamente iguales a cero.
Entonces, en este punto tenemos los siguientes resultados:
| Desplazamiento ($k$) | Coeficiente de autocorrelación ($r_k$) |
| 0 | 1.0 |
| 1 | 0.15 |
| 2 | 0.05 |
| 3 | 0.18 |
| 4 | -0.34 |
¡Y este resultado es precisamente la función de autocorrelación de esta Serie de Tiempo!
Sin embargo, en la práctica lo más común es representar el resultado anterior de manera gráfica. Así, si en el eje horizontal ubicamos los valores del desplazamiento $k$ (también conocido como «lag») y en el eje vertical ubicamos los correspondientes valores del índice de autocorrelación, tendremos la función de autocorrelación que se muestra a continuación:

Y a partir de este ejemplo podemos extraer una característica importante de cualquier función de autocorrelación: siempre iniciará en un valor de 1 para $k=0$ y mostrará diferentes valores inferiores a 1 (positivos o negativos) a medida que desplazamos la Serie.
¿Cómo interpretar la función de autocorrelación?
Muy bien, ya tenemos claro cómo obtener la función de autocorrelación para una Serie de Tiempo.
Ahora, en el ámbito de la Ciencia de Datos, lo que nos interesa es entender cómo interpretar la función de autocorrelación, lo cual resultará clave en fases como el análisis exploratorio de Series de Tiempo o la construcción de modelos predictivos.
Y para ello, resulta clave recordar que al calcular la función de autocorrelación lo que hacemos es comparar los valores actuales de la Serie con sus valores pasados.
Así que veamos tres ejemplos clásicos de interpretación:
1. Relación entre muestras consecutivas
En la siguiente figura vemos, en la parte de arriba, una Serie de Tiempo con tendencia creciente (es decir, una Serie cuyos valores se incrementan a lo largo del tiempo). Y en la parte de abajo vemos su correspondiente función de autocorrelación:

Si comparamos dos valores consecutivos de la Serie (espaciados por una muestra), veremos que estos tienen un alto grado de autocorrelación. Por ejemplo, en la siguiente figura vemos que al comparar las muestras 24 y 25 (señaladas con flechas en la parte de arriba), obtendremos un índice de correlación relativamente alto (0.9, indicado en rojo sombreado en la parte de abajo y correspondiente a un desplazamiento $k=1$):

Esto quiere decir que en este tipo de series, el valor actual se parece mucho al valor inmediatamente anterior.
Pero, si por el contrario miramos un desplazamiento mayor, digamos $k=9$, la correlación es mucho más pequeña como lo podemos ver en la figura de abajo:

Y este comportamiento obedece a muchas Series de Tiempo en el mundo real: es de esperar que en muchos casos dos muestras consecutivas se parezcan más entre sí que dos muestras separadas por 9 espacios de tiempo.
2. Series estacionales
Supongamos que analizamos una Serie de Tiempo que tiene un patrón característico donde se repite cada cierto tiempo, es decir una serie estacional como la que se muestra a continuación:

Si miramos la muestra 4 (indicada con una flecha en la parte superior de la figura de abajo), notamos que tiene una amplitud positiva, pero la muestra 9 ( también señalada con una flecha roja en la figura de abajo) tiene una amplitud negativa:

Al analizar en este ejemplo la autocorrelación en $k=5$ vemos que se obtiene un índice negativo (sombreado en color rojo en la parte de abajo de la figura anterior).
Sin embargo, si comparamos la muestra 4 con la muestra 14 (un salto de 10 muestras), notaremos que tienen casi la misma amplitud. Por tanto, la función de autocorrelación en $k=10$ tendrá un valor cercano a 1:

De hecho, si analizamos la función de autocorrelación de esta Serie, veremos un máximo evidente en $k=0$, pero también un pico máximo recurrente en $k=10$. Esto nos indica que la Serie de Tiempo es estacional: nos dice que cada 10 muestras la Serie se repite de manera casi idéntica.
Así que otro de los usos de la función de autocorrelación es para determinar la presencia de componentes estacionales en las series que estemos analizando.
3. Series de tiempo alternantes
Supongamos ahora un caso donde la Serie de Tiempo alterna drásticamente: la primera muestra es positiva, la segunda es negativa, la tercera es positiva, la cuarta es negativa y así sucesivamente:

Si comparamos por ejemplo la muestra dos (positiva) con la tres (negativa), al ser consecutivas ($k=1$), tendrán un índice de correlación negativo:

Pero si no miramos muestras consecutivas, sino que damos saltos de a dos (ej: comparar la muestra dos con la cuatro), ambas tendrán la misma amplitud positiva. Esto indica que la autocorrelación para $k=2$ será positiva:

Así que, al visualizar la función de autocorrelación, veremos que la gráfica va alternando: para saltos impares ($k=1, 3, 5$) las autocorrelaciones son negativas, lo que indica cambios de signo en la serie original. Para saltos pares ($k=2, 4, 6$), las autocorrelaciones son positivas, indicando que el signo de la serie se mantiene al dar este tipo de saltos.
Y con estos ejemplos resulta claro que la función de autocorrelación nos permite detectar patrones en la Serie de Tiempo que muchas veces no resultan fáciles de encontrar a simple vista.
Aplicaciones de la función de autocorrelación en Machine Learning
Tener la capacidad de leer e interpretar esta función es fundamental para dos tareas puntuales al trabajar con series temporales:
- Detección de patrones: como vimos en los ejemplos anteriores, nos permite descubrir de un simple vistazo si la serie es estacional, determinar su periodo exacto, o detectar patrones de correlación positiva o negativa constante entre las muestras. Esto es clave cuando realizamos el análisis exploratorio de Series de Tiempo.
- Construcción de modelos predictivos: Cuando diseñamos modelos clásicos para pronosticar Series de Tiempo, como los modelos Autoregresivos (AR), los modelos ARIMA (Autoregressive Integrated Moving Average) o modelos de suavizado exponencial, la función de autocorrelación es indispensable. Si observamos valores relativamente altos de autocorrelación para ciertos desplazamientos, podemos usar esta información directamente para definir correctamente los parámetros matemáticos de nuestro modelo o incluso justificar la elección del tipo de algoritmo predictivo a implementar.
De hecho, en el curso Series de Tiempo: Análisis Exploratorio (disponible en la Academia Online), vemos de forma práctica cómo usar Python para calcular y visualizar la función de autocorrelación en diferentes problemas de análisis de Series de Tiempo. Y desde luego vemos cómo analizar los resultados obtenidos dependiendo de los patrones observados en la función de autocorrelación.
Y de igual forma, en los cursos Pronósticos de Series de Tiempo con Suavizado Exponencial y Pronósticos de Series de Tiempo con ARIMA, vemos cómo usar la información que nos entrega la función de autocorrelación para entrenar este tipo de modelos.
Conclusión
Como acabamos de ver, la función de autocorrelación es una herramienta muy poderosa en el análisis de Series de Tiempo y en la construcción de modelos predictivos para este tipo de datos.
En esencia, esta función resume de manera gráfica las comparaciones (calculadas a través del índice de correlación) de una Serie de Tiempo con versiones desplazadas de sí misma. Y esto resulta muy útil pues nos permite encontrar patrones presentes en la Serie (muchas veces difíciles de observar a simple vista), lo cual podemos usar como insumo en el análisis exploratorio y el modelado predictivo de Series de Tiempo.
