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