Prvá otázka na zopakovanie: Čo je biely šum (teda, aké vlastnosti musí mať proces, aby bol bielym šumom)?
N <- 250 # pocet dat
set.seed(12345) # aby sme mali rovnake vysledky
x <- rnorm(N, mean=10, sd=1) # nezavisle N(10,1)
Budeme testovať, či sú bielym šumom.
Úloha: Zobrazte priebeh vygenerovaných dát.
Výstup:
Úloha: Zobrazte (postup bol na prednáške) odhadnutú autokorelačnú funkciu.
Výstup:
Otázky (zo slajdu 29 z prednášky):
Akú hypotézu vieme pomocou tohto výstupu testovať pre každú autokoreláciu?
Kedy sa táto nulová hypotéza zamieta?
Čo dostávame v našom prípade?
Úloha: Ljung-Boxovým testom testujte hypotézu (postup bol na prednáške), že autokorelácie pre lagy 1, 2 a 3 sú nulové.
Výstup:
##
## Box-Ljung test
##
## data: x
## X-squared = 0.93263, df = 3, p-value = 0.8175
Otázky (zo slajdu 30 z prednášky):
Ako sa vypočíta testovacia štatistika?
Aké je pravdepodobnostné rozdelenie štatistiky za platnosti nulovej hypotézy?
Pre aké hodnoty štatistiky sa hypotéza zamieta?
Ako sa vypočíta p-hodnota?
Čo dostávame v našom prípade?
V cykle vypocítajte p-hodnoty zodpovedajúce testovaniu hypotézy, že prvých k autokorelácií je súcasne nulových, pre k od 1 do 20.
# Postup:
k.max <- 20
p.hodnoty <- rep(NA, k.max)
for (i in 1:k.max) {
# doplnte priradenie do vektora p.hodnoty
}
# doplnte kreslenie grafu
Výstup:
Pomocou knižnice quantmod
načítame priamo do R-ka ceny akcií a zistíme, či sa ich výnosy dajú modelovať ako biely šum.
Načítajte (ak treba, aj nainštalujte) knižnicu quantmod
.
library(quantmod)
Na získanie cien akcií sa použije funkcia getSymbols
, napríklad:
getSymbols("AMZN", from="2014-01-01", to="2014-12-31")
## [1] "AMZN"
Pozrime sa, ako vyzerajú naše dáta, ktoré sú uložené v premennej AMZN
, zobrazíme ich začiatok:
head(AMZN)
## AMZN.Open AMZN.High AMZN.Low AMZN.Close AMZN.Volume
## 2014-01-02 398.80 399.36 394.02 397.97 2137800
## 2014-01-03 398.29 402.71 396.22 396.44 2210200
## 2014-01-06 395.85 397.00 388.42 393.63 3170600
## 2014-01-07 395.04 398.47 394.29 398.03 1916000
## 2014-01-08 398.47 403.00 396.04 401.92 2316500
## 2014-01-09 403.71 406.89 398.44 401.01 2103000
## AMZN.Adjusted
## 2014-01-02 397.97
## 2014-01-03 396.44
## 2014-01-06 393.63
## 2014-01-07 398.03
## 2014-01-08 401.92
## 2014-01-09 401.01
Napríklad:
chartSeries(AMZN)
Skúste aj:
# od januara do marca
chartSeries(AMZN, subset="2014-01::2014-03")
# mesacne data
AMZN.mesacne <- to.monthly(AMZN)
AMZN.mesacne # vypiseme
chartSeries(AMZN.mesacne) # graf
Z týchto dát AMZN
budeme potrebovať posledný stĺpec (AMZN.Adjusted
), z ktorého vypočítame výnosy. Budeme pracovať zo spojitými výnosmi, teda denné výnosy sa budú počítať ako logaritmus podielu cien v dvoch po sebe idúcich dňoch. Ekvivalentne:
ceny <- AMZN$AMZN.Adjusted
vynosy <- diff(log(ceny))
Priebeh výnosov:
chartSeries(vynosy, theme="white")
Úloha: Zistite, či výnosy firmy AMZN môžeme považovat za biely šum. Použite výberovú autokorelačnú funkciu a Ljung-Boxov test.
Knižnica quantmod
má veľa rôznych funkcií, môžete sa o nich dočítať na https://www.quantmod.com/
Napríklad ak poznáte Moving Average Convergence/Divergence Oscillator (MACD) (http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_average_convergence_divergence_macd), dá sa to aj v R-ku. Použijeme už načítané dáta, ktoré sú uložené v premennej AMZN
:
chartSeries(AMZN)
addMACD()
R markdown bol použitý aj na vytvorenie tejto stránky priamo v R-ku.
R markdown: http://rmarkdown.rstudio.com/
Konkrétne HTML dokumenty: http://rmarkdown.rstudio.com/html_document_format.html