Come calcolare l'autocorrelazione in python


L’autocorrelazione misura il grado di somiglianza tra una serie temporale e una versione ritardata di se stessa su intervalli di tempo successivi.

A volte viene chiamata anche “correlazione seriale” o “correlazione ritardata” perché misura la relazione tra i valori attuali di una variabile e i suoi valori storici.

Quando l’autocorrelazione in una serie storica è elevata, diventa facile prevedere i valori futuri semplicemente facendo riferimento ai valori passati.

Come calcolare l’autocorrelazione in Python

Supponiamo di avere le seguenti serie temporali in Python che mostrano il valore di una determinata variabile per 15 periodi diversi:

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

Possiamo calcolare l’autocorrelazione per ogni ritardo nella serie temporale utilizzando la funzione acf() dalla libreria statsmodels:

 import statsmodels.api as sm

#calculate autocorrelations
sm.tsa.acf(x)

array([ 1. , 0.83174224, 0.65632458, 0.49105012, 0.27863962,
        0.03102625, -0.16527446, -0.30369928, -0.40095465, -0.45823389,
       -0.45047733])

Il modo di interpretare il risultato è il seguente:

  • L’autocorrelazione al ritardo 0 è 1 .
  • L’autocorrelazione al ritardo 1 è 0,8317 .
  • L’autocorrelazione al ritardo 2 è 0,6563 .
  • L’autocorrelazione al ritardo 3 è 0,4910 .

E così via.

Possiamo anche specificare il numero di ritardi da utilizzare con l’argomento nlags :

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

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

Come tracciare la funzione di autocorrelazione in Python

Possiamo tracciare la funzione di autocorrelazione per una serie temporale in Python utilizzando la funzione tsaplots.plot_acf() dalla libreria statsmodels:

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

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

Funzione di autocorrelazione in Python

L’asse x mostra il numero di ritardi e l’asse y mostra l’autocorrelazione a quel numero di ritardi. Per impostazione predefinita, il grafico inizia con lag = 0 e l’autocorrelazione sarà sempre 1 con lag = 0.

Possiamo anche ingrandire i primi ritardi scegliendo di utilizzare meno ritardi con l’argomento lags :

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

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

Tracciare la funzione di autocorrelazione in Python

Puoi anche modificare il titolo e il colore dei cerchi utilizzati nella trama con gli argomenti titolo e colore :

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags= 5, color='g', title='Autocorrelation function' )
plt.show() 

Funzione di autocorrelazione in Python con titolo personalizzato

Puoi trovare altri tutorial su Python in questa pagina .

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *