Cómo calcular la autocorrelación en Python

Puedes opinar sobre este contenido:
  • 0
  • 0
  • 0
  • 0

La autocorrelación mide el grado de similitud entre una serie de tiempo y una versión retrasada de sí misma en intervalos de tiempo sucesivos.

A veces también se lo denomina «correlación en serie» o «correlación rezagada», ya que mide la relación entre los valores actuales de una variable y sus valores históricos.

Cuando la autocorrelación en una serie de tiempo es alta, resulta fácil predecir valores futuros simplemente haciendo referencia a valores pasados.

Cómo calcular la autocorrelación en Python

Supongamos que tenemos la siguiente serie de tiempo en Python que muestra el valor de una determinada variable durante 15 períodos de tiempo diferentes:

#define data
x = [22, 24, 25, 25, 28, 29, 34, 37, 40, 44, 51, 48, 47, 50, 51]

Podemos calcular la autocorrelación para cada retraso en la serie de tiempo usando la función acf () de la biblioteca statsmodels:

importar statsmodels.api como sm

#calcular autocorrelaciones
sm.tsa.acf (x)

matriz ([1., 0.83174224, 0.65632458, 0.49105012, 0.27863962,
        0.03102625, -0.16527446, -0.30369928, -0.40095465, -0.45823389,
       -0,45047733])

La forma de interpretar la salida es la siguiente:

  • La autocorrelación en el retraso 0 es 1 .
  • La autocorrelación en el retraso 1 es 0,8317 .
  • La autocorrelación en el retraso 2 es 0,6563 .
  • La autocorrelación en el retardo 3 es 0,4910 .

Y así.

También podemos especificar el número de retrasos a usar con el argumento nlags :

sm.tsa.acf (x, nlags = 5 )

matriz ([1.0, 0.83174224, 0.65632458, 0.49105012, 0.27863962, 0.03102625])

Cómo trazar la función de autocorrelación en Python

Podemos trazar la función de autocorrelación para una serie de tiempo en Python usando la función tsaplots.plot_acf () de la biblioteca statsmodels:

de statsmodels.graphics importar tsaplots
 importar matplotlib.pyplot como plt

#plot función de autocorrelación
fig = tsaplots.plot_acf (x, rezagos = 10)
plt.show ()

Función de autocorrelación en Python

El eje x muestra el número de retrasos y el eje y muestra la autocorrelación en ese número de retrasos. De forma predeterminada, la gráfica comienza en lag = 0 y la autocorrelación siempre será 1 en lag = 0.

También podemos acercarnos a los primeros retrasos eligiendo usar menos retrasos con el argumento de retrasos :

de statsmodels.graphics importar tsaplots
 importar matplotlib.pyplot como plt

#plot autocorrelation function 
fig = tsaplots.plot_acf (x, lags = 5 )
plt.show ()

Gráfico de la función de autocorrelación en Python

También podemos cambiar el título y el color de los círculos utilizados en la trama con el título y los argumentos de color :

de statsmodels.graphics importar tsaplots
 importar matplotlib.pyplot como plt

#plot función de autocorrelación 
fig = tsaplots.plot_acf (x, lags = 5, color = 'g', title = 'Función de autocorrelación' ) 
plt.show ()

Función de autocorrelación en Python con título personalizado

Puede encontrar más tutoriales de Python en esta página .

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

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

La regresión logística es un método estadístico que utilizamos para ajustar un modelo de regresión cuando la variable de respuesta…
statologos comunidad-2

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

You have Successfully Subscribed!