Big Data Analytics - Analisi delle serie temporali

Le serie temporali sono una sequenza di osservazioni di variabili categoriali o numeriche indicizzate da una data o timestamp. Un chiaro esempio di dati di serie temporali è la serie temporale di un prezzo di un'azione. Nella tabella seguente, possiamo vedere la struttura di base dei dati delle serie temporali. In questo caso le osservazioni vengono registrate ogni ora.

Timestamp Prezzo delle azioni
2015-10-11 09:00:00 100
2015-10-11 10:00:00 110
11-10-2015 11:00:00 105
2015-10-11 12:00:00 90
2015-10-11 13:00:00 120

Normalmente, il primo passaggio nell'analisi delle serie temporali consiste nel tracciare la serie, che normalmente viene eseguita con un grafico a linee.

L'applicazione più comune dell'analisi delle serie temporali è la previsione di valori futuri di un valore numerico utilizzando la struttura temporale dei dati. Ciò significa che le osservazioni disponibili vengono utilizzate per prevedere i valori dal futuro.

L'ordinamento temporale dei dati, implica che i metodi di regressione tradizionali non sono utili. Per costruire previsioni affidabili, abbiamo bisogno di modelli che tengano conto dell'ordinamento temporale dei dati.

Si chiama il modello più utilizzato per l'analisi delle serie storiche Autoregressive Moving Average(ARMA). Il modello è composto da due parti, unautoregressive (AR) parte e a moving average(MA) part. Il modello viene solitamente definito modello ARMA (p, q) dove p è l'ordine della parte autoregressiva eq è l'ordine della parte della media mobile.

Modello autoregressivo

L' AR (p) viene letto come un modello di ordine autoregressivo p. Matematicamente è scritto come -

$$ X_t = c + \ sum_ {i = 1} ^ {P} \ phi_i X_ {t - i} + \ varepsilon_ {t} $$

dove {φ 1 ,…, φ p } sono i parametri da stimare, c è una costante e la variabile casuale ε t rappresenta il rumore bianco. Sono necessari alcuni vincoli sui valori dei parametri affinché il modello rimanga stazionario.

Media mobile

La notazione MA (q) si riferisce al modello della media mobile di ordine q -

$$ X_t = \ mu + \ varepsilon_t + \ sum_ {i = 1} ^ {q} \ theta_i \ varepsilon_ {t - i} $$

dove θ 1 , ..., θ q sono i parametri del modello, μ è l'aspettativa di X t , e ε t , ε t - 1 , ... sono termini di errore del rumore bianco.

Media mobile autoregressiva

Il modello ARMA (p, q) combina p termini autoregressivi e q termini di media mobile. Matematicamente il modello si esprime con la seguente formula:

$$ X_t = c + \ varepsilon_t + \ sum_ {i = 1} ^ {P} \ phi_iX_ {t - 1} + \ sum_ {i = 1} ^ {q} \ theta_i \ varepsilon_ {ti} $$

Possiamo vedere che il modello ARMA (p, q) è una combinazione di modelli AR (p) e MA (q) .

Per dare qualche intuizione al modello si consideri che la parte AR dell'equazione cerca di stimare i parametri per le osservazioni X t - i per prevedere il valore della variabile in X t . Alla fine è una media ponderata dei valori passati. La sezione MA utilizza lo stesso approccio ma con l'errore delle osservazioni precedenti, ε t - i . Quindi, alla fine, il risultato del modello è una media ponderata.

Il seguente frammento di codice illustra come implementare un ARMA (p, q) in R .

# install.packages("forecast")
library("forecast")  

# Read the data 
data = scan('fancy.dat') 
ts_data <- ts(data, frequency = 12, start = c(1987,1)) 
ts_data  
plot.ts(ts_data)

La rappresentazione grafica dei dati è normalmente il primo passo per scoprire se c'è una struttura temporale nei dati. Possiamo vedere dalla trama che ci sono forti picchi alla fine di ogni anno.

Il codice seguente adatta un modello ARMA ai dati. Esegue diverse combinazioni di modelli e seleziona quello che presenta meno errori.

# Fit the ARMA model
fit = auto.arima(ts_data) 
summary(fit) 

# Series: ts_data  
# ARIMA(1,1,1)(0,1,1)[12]                     
#    Coefficients: 
#    ar1     ma1    sma1 
# 0.2401  -0.9013  0.7499 
# s.e.  0.1427   0.0709  0.1790 

#  
# sigma^2 estimated as 15464184:  log likelihood = -693.69 
# AIC = 1395.38   AICc = 1395.98   BIC = 1404.43 

# Training set error measures: 
#                 ME        RMSE      MAE        MPE        MAPE      MASE       ACF1 
# Training set   328.301  3615.374  2171.002  -2.481166  15.97302  0.4905797 -0.02521172