Cómo calcular la correlación cruzada en Python

La correlación cruzada es una forma de medir el grado de similitud entre una serie de tiempo y una versión retrasada de otra serie de tiempo.

Este tipo de correlación es útil para calcular porque nos puede decir si los valores de una serie de tiempo son predictivos de los valores futuros de otra serie de tiempo. En otras palabras, puede decirnos si una serie de tiempo es un indicador adelantado de otra serie de tiempo.

Este tipo de correlación se utiliza en muchos campos diferentes, que incluyen:

Negocios: el gasto en marketing a menudo se considera un indicador principal de los ingresos futuros de las empresas. Por ejemplo, si una empresa gasta una cantidad de dinero anormalmente alta en marketing durante un trimestre, se espera que los ingresos totales sean altos x trimestres después.

Economía: el índice de confianza del consumidor (ICC) se considera un indicador adelantado del producto interno bruto (PIB) de un país. Por ejemplo, si el CCI es alto durante un mes determinado, es probable que el PIB sea mayor x meses después.

El siguiente ejemplo muestra cómo calcular la correlación cruzada entre dos series de tiempo en Python.

Ejemplo: cómo calcular la correlación cruzada en Python

Supongamos que tenemos la siguiente serie de tiempo en Python que muestra el gasto total en marketing (en miles) para una determinada empresa junto con los ingresos totales (en miles) durante 12 meses consecutivos:

importar numpy como np

#define data  
marketing = np. matriz ([3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8])
ingresos = np. matriz ([21, 19, 22, 24, 25, 29, 30, 34, 37, 40, 35, 30])

Podemos calcular la correlación cruzada para cada retraso entre las dos series de tiempo usando la función ccf () del paquete statsmodels de la siguiente manera:

importar modelos de estadísticas. api  como sm

#calcular correlación cruzada
 sm. tsa . stattools . ccf (marketing, ingresos, ajustado = falso )

matriz ([0.77109358, 0.46238654, 0.19352232, -0.06066296, -0.28159595,
       -0,44531104, -0,49159463, -0,35783655, -0,15697476, -0,03430078,
        0.01587722, 0.0070399])

A continuación, se explica cómo interpretar esta salida:

  • La correlación cruzada en el rezago 0 es 0,771 .
  • La correlación cruzada en el rezago 1 es 0,462 .
  • La correlación cruzada en el retraso 2 es 0,194 .
  • La correlación cruzada en el rezago 3 es -0,061 .

Y así.

Observe que la correlación entre las dos series de tiempo se vuelve cada vez menos positiva a medida que aumenta el número de rezagos. Esto nos dice que el gasto en marketing durante un mes determinado es bastante predictivo de los ingresos uno o dos meses después, pero no predice los ingresos más allá de más de dos meses.

Esto tiene sentido intuitivamente: esperaríamos que un alto gasto en marketing durante un mes determinado prediga un aumento de los ingresos durante los próximos dos meses, pero no necesariamente predice los ingresos varios meses en el futuro.

Recursos adicionales

Cómo calcular la autocorrelación en Python
Cómo calcular la correlación parcial en Python
Cómo calcular la correlación punto-biserial en Python

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Si X es una variable aleatoria que sigue una distribución binomial con n ensayos y p probabilidad de éxito en…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!