x <- read.table("http://www.iam.fmph.uniba.sk/institute/stehlikova/cr14cv/data/motor.txt", col.names=c("Complaints"))
Z premennej x
urobíme časový rad pomocou funkcie ts
, pričom ako jej parametre zadávame:
frequency
- frekvencia dát (4 pre kvartálne, 12 pre mesacné) start
- prvé pozorovanie, v tvare vektora (rok, kvartál), resp. (rok, mesiac). Analogicky môžeme použit parameter end
x <- ts(x, frequency=12, start=c(1996,1))
plot(x)
Na exponenciálne zhladzovanie použijeme funkciu HoltWinters
(je to špeciálny prípad Holt-Wintersovej metódy, o ktorej budeme hovoriť neskôr), pričom zadáme beta=FALSE, gamma=FALSE
model1 <- HoltWinters(x, beta=FALSE, gamma=FALSE)
model1
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = x, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.1429622
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 17.70343
plot(model1)
model1$SSE
## [1] 2502.028
a takisto zadať vlastné hodnoty parametrov:
model1 <- HoltWinters(x, alpha=0.2, beta=FALSE, gamma=FALSE)
model1$SSE
## [1] 2526.39
data <- read.table("http://www.iam.fmph.uniba.sk/institute/stehlikova/cr14cv/data/wine.txt", header=TRUE)
attach(data)
head(data)
## winet fortw dryw sweetw red rose spark
## 1 1 2585 1954 85 464 112 1686
## 2 2 3368 2302 89 675 118 1591
## 3 3 3210 3054 109 703 129 2304
## 4 4 3111 2414 95 887 99 1712
## 5 5 3756 2226 91 1139 116 1471
## 6 6 4216 2725 95 1077 168 1377
Budeme modelovať premennú sweetw
. Spravte z nej časový rad podľa popisu v slajdoch a vykreslite priebeh.
HWsweet <- HoltWinters(sweetw, seasonal="mult")
plot(HWsweet)
Funkciou predict
vieme vypočítat predikcie, parameter n.ahead
určuje, na koľko období chceme predikcie robit. Funkcia ts.plot
je užitočná pri kreslení grafov časových radov, ktoré sú definované na rôznych časových intervaloch.
sweetP <- predict(HWsweet, n.ahead=48)
ts.plot(sweetw, sweetP, gpars=list(col=c("blue","green")))
data(AirPassengers)
plot(AirPassengers)
Budeme potrebovať knižnicu mFilter
library(mFilter)
Použitie:
hpf1 <- hpfilter(x, freq=100)
K odhadnutým zložkám môžeme pristupovať nasledovne: hpf1$trend
, resp. hpf$cycle
. Nakreslite pomocou nich tento graf: