Big Data Analytics - Analiza szeregów czasowych

Szeregi czasowe to sekwencja obserwacji zmiennych kategorialnych lub numerycznych indeksowanych według daty lub sygnatury czasowej. Wyraźnym przykładem danych szeregów czasowych są szeregi czasowe ceny akcji. W poniższej tabeli możemy zobaczyć podstawową strukturę danych szeregów czasowych. W tym przypadku obserwacje są rejestrowane co godzinę.

Znak czasu Cena akcji
11.10.2015 09:00:00 100
11.10.2015 10:00:00 110
11.10.2015 11:00:00 105
11.10.2015 12:00:00 90
11.10.2015 13:00:00 120

Zwykle pierwszym krokiem w analizie szeregów czasowych jest wykreślenie szeregu, zwykle odbywa się to za pomocą wykresu liniowego.

Najpowszechniejszym zastosowaniem analizy szeregów czasowych jest prognozowanie przyszłych wartości wartości liczbowej przy użyciu struktury czasowej danych. Oznacza to, że dostępne obserwacje służą do przewidywania wartości z przyszłości.

Uporządkowanie danych w czasie oznacza, że ​​tradycyjne metody regresji nie są przydatne. Aby zbudować solidną prognozę, potrzebujemy modeli uwzględniających czasowe uporządkowanie danych.

Najpopularniejszy model analizy szeregów czasowych nosi nazwę Autoregressive Moving Average(ARMA). Model składa się z dwóch części, anautoregressive (AR) część i a moving average(MA) cz. Model jest zwykle nazywany modelem ARMA (p, q), gdzie p jest rzędem części autoregresyjnej, a q jest rzędem części średniej ruchomej.

Model autoregresyjny

AR (p) jest odczytywana jako Model AR rzędu p. Matematycznie jest napisane jako -

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

gdzie {φ 1 ,…, φ p } to parametry do oszacowania, c jest stałą, a zmienna losowa ε t reprezentuje biały szum. Konieczne są pewne ograniczenia wartości parametrów, aby model pozostał nieruchomy.

Średnia krocząca

Notacja MA (q) odnosi się do modelu średniej ruchomej rzędu q -

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

gdzie θ 1 , ..., θ q są parametrami modelu, μ jest oczekiwaniem X t , a ε t , ε t - 1 , ... są składnikami błędu białego szumu.

Autoregresywna średnia krocząca

Model ARMA (p, q) łączy warunki p autoregresyjne i q średniej ruchomej. Matematycznie model jest wyrażony następującym wzorem -

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

Widzimy, że model ARMA (p, q) jest połączeniem modeli AR (p) i MA (q) .

Aby dać pewną intuicję modelu, weźmy pod uwagę, że część AR równania dąży do oszacowania parametrów dla obserwacji X t - i w celu przewidzenia wartości zmiennej w X t . Ostatecznie jest to średnia ważona poprzednich wartości. Sekcja MA stosuje to samo podejście, ale z błędem poprzednich obserwacji ε t - i . Ostatecznie wynikiem modelu jest średnia ważona.

Poniższy kod ilustruje sposób wdrożenia ARMA (p, q) w 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)

Wykreślenie danych jest zwykle pierwszym krokiem do ustalenia, czy dane mają strukturę czasową. Z wykresu widać, że pod koniec każdego roku są silne skoki.

Poniższy kod dopasowuje model ARMA do danych. Uruchamia kilka kombinacji modeli i wybiera ten, który ma mniej błędów.

# 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