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()
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()
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()
Puoi trovare altri tutorial su Python in questa pagina .