In questo articolo vogliamo presentare brevemente l’analisi classica di time series. Il tema che trattiamo è molto ampio e richiede conoscenze abbastanza approfondite per la comprensione dettagliata degli algoritmi trattati; non vogliamo, tuttavia, rinunciare a esporre una presentazione che possa introdurre all’argomento e fornire alcuni strumenti essenziali, mentre nella seconda parte ( che pubblicheremo fra 15 giorni ) affronteremo l’argomento time series dal punto di vista del ML machine learning e AI.
Che cos’è una Time Series
Una time series (serie temporale) è una serie di dati indicizzati in sequenza rispetto al tempo. Un esempio è una sequenza di osservazioni o rilevazioni registrate allo scorrere del tempo. Vi sono due macrocategorie di time series:
- univariate time series: le osservazioni sono monodimensionali, ovvero: viene registrato un solo valore numerico allo scorrere del tempo;
- multivariate time series: le osservazioni sono multidimensionali, ovvero, si registrano più valori numerici per un singolo istante di tempo.
Tipicamente, una time series viene rappresentata con una struttura dati che registri un timestamp, che può essere di qualche tipo specifico per date oppure un intero o long contenente uno Unix timestamp; oltre a questo contiene dati addizionali custom, che nella versione più semplice possono essere un unico valore numerico, ovvero l’osservazione registrata allo scorrere del tempo.
Per rendere concreta questa definizione, presentiamo un esempio: la registrazione della temperatura allo scorrere del tempo:
Il precedente è un esempio di univariate, vediamo un caso di multivariate time series:
Nel precedente esempio le misurazioni registrate per ogni timestamp sono due: la temperatura massima e la minima; perciò si parla, come detto, di multivariate time series.
Un esempio più articolato può includere misurazioni disomogenee (ovvero, di grandezze di tipo diverso) registrate con lo stesso timestamp (i dati sono tratti da qui):
Scomposizione di time series
Una time series può essere scomposta in quattro componenti che codificano specifici aspetti dell’evoluzione dei valori registrati nel tempo.
- Trend: è il movimento a lungo termine della serie, che può essere crescente, decrescente, stazionario o una composizione di questi per periodi diversi.
- Variazione stagionale: è un pattern ripetitivo di crescita e decrescita che presenta una frequenza fissa.
- Fluttuazioni cicliche: è un pattern ripetitivo di crescita e decrescita che però non presenta una frequenza fissa.
- Variazioni irregolari: variazioni che non presentano regolarità codificabile.
Un esempio tratto da qui di scomposizione nelle quattro componenti:
Nell’immagine si vedono: la time series come primo grafico, il trend come secondo, la variazione stagionale a seguire e le fluttuazioni irregolari, chiamate qui “residual”, per ultimo.
Una rappresentazione delle componenti “sovrapposte” è disponibile qui:
Dalla figura precedente si evince che il trend della time series è crescente e ha andamento lineare; la stagionalità è la linea più scura che si sovrappone al trend, con oscillazioni regolari.
La scomposizione permette quindi di estrarre alcune informazioni sull’andamento del fenomeno studiato.
Algoritmi classici
Vediamo alcuni algoritmi classici utilizzati per la predizione.
Autoregressive (AR)
Un modello Autoregressive (AR) utilizza i pattern estratti dai dati storici per estrapolare un comportamento futuro della time series.
Secondo Wikipedia (corsivo nostro):
Il modello autoregressivo è un modello lineare che specifica che la variabile in uscita dipende linearmente dai valori delle uscite precedenti.
Il modello si basa sulla regressione: indicando con y(t) il valore della time series al tempo t e con y(t-i) il valore della stessa all’istante t-i, per i=0,…,t-1, possiamo eseguire una regressione lineare:
y(t)= b(1)y(t-1) + … + b(t-1)y(1)+ e(t)
dove e(t) indica un errore al tempo di previsione al tempo t e i (possibilmente nulli) b(t) sono i coefficienti della regressione lineare.
Moving Average (MA)
Il modello Moving Average (MA) usa l’errore previsto allo step precedente per elaborare un trend medio sui dati usando una regressione.
Come riporta Wikipedia:
La media mobile di un insieme di dati consiste nel creare una serie di medie di vari sottoinsiemi dell’insieme completo. È uno strumento usato per l’analisi di serie storiche […].
Il modello si può formalizzare come:
y(t)= t(1) e(t-1)+ … + t(t-1) e(1)+e(t)
dove t(i) sono dei coefficienti regressori, mentre e(t-i) sono gli errori ai tempi t-i rispettivamente, per i=0,…,t-1.
Autoregressive Moving Average (ARMA)
Il modello ARMA (Autoregressive Moving Average) è la combinazione dei due precedenti. Da un punto di vista formale, la predizione avviene usando una formula del tipo:
dove la prima somma ha p termini e la seconda q termini, detti rispettivamente ordine di autoregressione e ordine di media mobile.
L’algoritmo ARMA spiega la relazione utilizzando i valori passati della stessa (mediante il modello AR) e li combina con un rumore bianco (mediante il modello MA).
Autoregressive Integrated Moving Average (ARIMA)
L’algoritmo Autoregressive Integrated Moving Average (ARIMA) è uno dei più utilizzati nel time series forecasting (predizione di serie temporali). L’obiettivo principale del modello ARIMA è quello di a spiegare l’autocorrelazione tra i dati. Perciò ARIMA si basa su due concetti fondamentali: stazionarietà e differenziazione.
Una time series è stazionaria se la media e la varianza delle osservazioni non cambiano nel tempo. Quelle con trend non costante, perciò, non sono stazionarie. Una time series stazionaria non presenta modelli prevedibili di interesse nel lungo periodo (ha varianza costante).
La differenziazione, invece, è un calcolo della differenza tra osservazioni stazionarie consecutive nei punti dati. Si utilizza questo metodo per modificare una serie temporale, stabilizzando la media ed eliminando (o riducendo) il trend e la stagionalità.
Un modello generato dall’algoritmo ARIMA può quindi essere definito come un modello di previsione di serie temporali differenziate al fine di renderle stazionarie.
Degno di nota è il modello SARIMA, dove si integra anche una componente stagionale.
Conclusioni
In questo articolo abbiamo presentato il concetto di time series e alcuni classici metodi di analisi per studiare e prevederne il comportamento. Lo studio di queste strutture è un campo complesso e ampio; moltissimi fenomeni temporali, infatti, possono essere rappresentati con esse.
Alcuni esempi nel campo industriale sono le varie misurazioni di sensori o i log di sistemi, che vengono solitamente storicizzati con un timestamp associato; esempi in altri ambiti potrebbero essere misurazioni di un satellite, dati storici di mercati finanziari, misurazioni ambientali (temperatura, polveri inquinanti, etc).
L’analisi di time series è quindi un requisito essenziale per lo studio di molti fenomeni.
Nel nostro blog abbiamo molti articoli interessanti, non perdertene nemmeno uno!