4  Časové řady

Funkce pro základní statistické zpracování časových řad opět nalezneme v balíčku stats, jehož jmenný prostor je připojen po otevření R.

Budeme pracovat se dvěma datovými sadami:

  1. Naše již připravená data z MOPEX
  2. Vnitřní datová sada R co2, kterou nahrajete pomocí funkce data()
Kód
dataset <- readRDS("data/data.rds")[1:15000,]
data("co2")

4.1 Autokorelační funkce

ACF slouží k posouzení, zda časová řada obsahuje cyklickou či periodickou složku a také, zda je či není řadou náhodnýhc čísel. Graficky je vyjádřena pomocí korelogramu.

Kód
par(mfrow = c(1, 2))
acf(dataset$R)
acf(co2)

Vlevo řada se silnou autokorelací složek bez znatelené periodicity, vpravo dtto s periodickou složkou

4.2 Dekompozice časové řady

Dekompozicí časové řady rozumíme rozklad na složky:

  1. Trendovou \(T_t\)
  2. Sezónní \(S_t\)
  3. Cyklickou \(C_t\)
  4. Náhodnou \(\epsilon_t\)

4.2.1 Aditivní dekompozice

Předpokládáme, že řadu lze rozložit na součet složek

\[ Y_t =T_t +S_t +C_t +\epsilon_t, \]

Kód
dec_co2 <- decompose(co2)
plot(dec_co2)

Kód
plot(dec_co2$trend)

4.2.2 Residua

Ověřte, zda po dekompozici co2 residua \(\epsilon_t\) splňují definici bílého šumu tzn. mají nulovou střední hodnotu a konečný rozptyl a jsou nekorelované.

Kód
shapiro.test(dec_co2$random)

    Shapiro-Wilk normality test

data:  dec_co2$random
W = 0.99506, p-value = 0.1549
Kód
mean(dec_co2$random, na.rm = TRUE)
[1] 0.001743421
Kód
var(dec_co2$random, na.rm = TRUE)
[1] 0.07028142
Kód
# ...

4.3 Zhlazovací funkce

Kód
par(mfrow = c(1, 2))
plot(dataset$Tmin, type = "l", 
     col = "slategray", 
     lwd = 0.5)
md1 <- loess(Tmin ~ na.omit(1:length(dataset$Tmin)), 
             data = dataset, 
             degree = 1)
lines(md1$fitted, col = "darkred")

plot(filter(x = dataset$R, 
             method = "convolution", 
             filter = c(rep(1/365.25, 365.25)), 
             sides = 1), 
      col = "dodgerblue3", 
     type = "l")

Kód
md2 <- lm(Tmin ~ DTM, data = dataset)
plot(dataset$Tmin, type = "l", 
     col = "slategray", 
     lwd = 0.5)
lines(md1$fitted, col = "darkred")
abline(coef(md2), col = "red")