Predikcia časových radov¶
Najprv si nainštalujeme balík dynlm a načítame si dátovú množinu USMacroG, ktorá obsahuje viacero časových radov makroekonomických ukazovateľov USA.
install.packages("dynlm")
install.packages("AER", repos='http://cran.us.r-project.org') # after restart kernel
library("dynlm")
data("USMacroG", package="AER")
summary(USMacroG)
Zobrazíme si v jednom grafe priebehy príjmov dpi a spotreby consumption:
ts.plot(USMacroG[, c("dpi", "consumption")], lty=c(3,1))
Aby sme zistili či je vhodné modelovať časový rad lineárnym modelom, môžeme si vypočítať
autokorelačné koeficienty, tzn. koreláciu medzi hodnotami $y_t$ a $y_{t-1}$, $y_t$ a $y_{t-2}$ atď. Pre
výpočet a zobrazenie môžeme použiť funkciu acf, napr. zobrazíme autokorelačné koeficienty
pre časový rad dpi s maximálnym oneskorením 4:
dpi = USMacroG[,"dpi"]
autocorr = acf(dpi, lag.max=4)
Môžeme si zobraziť aj závislosť medzi $y$ a $y_{t-k}$ kde k je oneskorenie, napr. ak si chceme
zobraziť závislosť medzi $y_t$ a $y_{t-1}$, najprv si prevedieme časovú postupnosť na vektor
funkciou as.numeric a potom si vyberieme prvky od [1:N-1] a [2:N] kde N je dĺžka vektora
(počet hodnôt v časovom rade):
dpi = as.numeric(dpi)
plot(dpi[1:length(dpi)-1], dpi[2:length(dpi)])
cor(dpi[1:length(dpi)-1], dpi[2:length(dpi)])
Ak porovnáme hodnotu korelácie z posledného výpisu s výstupom autokorelačnej funkcie
acf pre oneskorenie 1 (autocorr[1]) zistíme, že sa odlišujú pričom by malo ísť o koreláciu
medzi rovnakými hodnotami. Rozdiel je spôsobený odlišnou normalizáciou pri výpočte
korelačného koeficientu, acf hodnota je normovaná 1/N a cor 1/(N-1).
Vytvoríme model ktorý bude predikovať spotrebu v čase t na základe aktuálnej hodnoty
príjmov dpi a predchádzajúcej spotreby v čase t-1:
cons_lm1 <- dynlm(consumption ~ dpi + L(consumption), data=USMacroG)
Výsledný objekt je podobného typu ako pri lineárnej regresii, tzn. funkcia summary napr.
zobrazí hodnoty vypočítaných koeficientov a ich významnosť pre predikciu a základné
štatistiky o rezíduách. Podobne môžete vypočítať kvadratickú chybu na trénovacích dátach
funkciou deviance.
summary(cons_lm1)
deviance(cons_lm1)
Predikované hodnoty pre celý časový rad si môžeme vypočítať funkciou fitted:
fitted(cons_lm1)
Aby sme vyhodnotili presnosť a kvalitu modelu, môžeme si zobraziť časový priebeh a
predikované hodnoty v jednom grafe. Tak isto je užitočné si zobraziť v čase aj hodnoty
rezíduí, ktoré sa dajú vypočítať funkciou residuals:
ts.plot(USMacroG[,"consumption"], fitted(cons_lm1),
lty=c(1:2))
ts.plot(residuals(cons_lm1))
Úlohy na cvičení¶
- Načítajte dáta
USMacroG. Pre časový rad consumption vypočítajte a zobrazte pomocou funkcieacfautokorelačné koeficienty až do oneskorenia 10.
- Pre časový rad consumption si vytvorte dátovú množinu zloženú z oneskorených
atribútoch v čase
t,t-1,t-2,t-3,t-4at-5. Pomocou funkciecorvypočítajte korelačnú maticu pre všetky atribúty. Zistite s ktorým atribútom je najviac korelovaný atribútt-2,t-3at-4, a zobrazte závislosti medzit-2,t-3at-4a najviac korelovanými atribútmi.
- Pomocou funkcie cor vypočítajte korelačný koeficient medzi hodnotami časového
radu
consumtiona všetkými ostatnými ukazovateľmi v dátovej množineUSMacroG. Vyberte dva ukazovatele, ktoré sú sconsumptionnajviac korelované. Vytvorte prediktívny model, ktorý predikuje $consumption_t$ na základe týchto dvoch atribútov oneskorených ot-1.
- Zobrazte priebeh radu
consumptiona predikcie modelu z predchádzajúceho príkladu. Vypočítajte rezíduá a zobrazte priebeh rezíduí.
Vytvorte autokorelačné prediktívne modely
$consumption_t = \beta_0 + \beta_1 dpi_t + \beta_2 dpi_{t-1}$
a
$consumption_t = \beta_0 + \beta_1 dpi_t + \beta_2 dpi_{t-1} + \beta_3 consumption_{t-1}$
a
$consumption_t = \beta_{0} + \beta_1 dpi_t + \beta_2 consumption_{t-1}$.
Na jednom grafe zobrazte priebeh časového radu consumption a predikcie všetkých troch modelov.
- Vyhodnoťte presnosť modelov pomocou funkcie
deviance. Zistite, ktorý model je najlepší a zistite, ktorý vstupný atribút je najdôležitejší pre tento model. Zobrazte X-Y závislosť medziconsumptiona najdôležitejším atribútom.
- Zobrazte časový priebeh rezíduí a histogram rezíduí pre model $consumption_t = \beta_0 + \beta_1 dpi_t + \beta_2 dpi_{t-1} + \beta_3 consumption_{t-1}.$
Načítajte dáta
AirPassengers. Pomocou funkcie acf zobrazte autokorelačný graf. Všimnite si ako sa mení hodnota autokorelačných koeficientov pri časových radoch s cyklickou zložkou. Vytvorte autoregresný model$y_t = \beta_0 + \beta_1(y_{t−1} − y_{t−2}) + \beta_2 y_{t−4}$.
Dekomponujte časový priebeh AirPassengers na aditívne zložky pomocou funkcie
dec = decompose(AirPassengers). Vyberte z priebehu iba zložku trendudec$trenda vytvorte autoregresný model$y_t = \beta_0 + \beta_1(y_{t−1} − y_{t−2}) + \beta_2 y_{t−4} $
pre časový priebeh trendu. Vypočítajte predikciu modelu funkciou
fitteda pripočítajte k nej sezónnu zložkudec$seasonal. Výsledný časový rad zobrazte v jednom grafe spolu s priebehomAirPassengersa predikciou predchádzajúceho modelu