Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
UVOD U R
FINANCIJSKI PRAKTIKUM
1. VJEŽBE
FINANCIJSKI PRAKTIKUM
UVOD U R
Kratka povijest R-a
I S statistički programerski jezik razvijen u Bell Laboratories 1975. -1976.
I razvoj S-a doveo do današnje dvije implementacije S-PLUS i RI S-PLUS komercijalna verzija S-aI R open-source verzija S-a
FINANCIJSKI PRAKTIKUM
UVOD U R
Zašto R?
Široka upotrebaI R je postao standard za statistički softwareI koristi se razvoj statističkog software-a i analizu podataka
Svojstva S-aI objektno orijentiranI interaktivan
Svojstva R-aI ima gotove funkcije za izvođenje netrivijalnih statističkih operacijaI open-source program, besplatanI radi na raznim platformama (Unix/Linux, Windows)
FINANCIJSKI PRAKTIKUM
UVOD U R
Mane R-a
Mane R-aI PROBLEMI S BRZINOM: Kao svi interpretirani jezici u R lakše i
jednostavnije pišemo kodove, ali je zato izvođenje programakompliciranije. No ako se ne bavimo nekim prevelikim skupompodataka, poput milijardi financijskih transakcija u svijetu, R bitrebao biti dovoljan za naše potrebe.
I PROBLEMI S MEMORIJOM: R upisuje skoro sve podatke umemoriju. I to može biti problem. Za velike skupove podataka(poput onih u genetici) R može biti beskorisan (kao i drugi sličniprogrami), pa se u tim situacijama razvijaju posebni programi zaobradu podataka, a u R-u se razvijaju prototipovi programa. Dioproblema se može riješiti korištenjem baza podatka, jer R možepristupiti skoro svim bazama. Podatke možemo pohraniti u bazamapodatka i povući ih kad nam trebaju. Inače, Windowsi stavljajudodatno ograničenje na memoriju, pa problemi s memorijom se češćedogađaju korisnicima tog OS-a.
FINANCIJSKI PRAKTIKUM
UVOD U R
Mane R-a
Mane R-aI PROBLEMI S BRZINOM: Kao svi interpretirani jezici u R lakše i
jednostavnije pišemo kodove, ali je zato izvođenje programakompliciranije. No ako se ne bavimo nekim prevelikim skupompodataka, poput milijardi financijskih transakcija u svijetu, R bitrebao biti dovoljan za naše potrebe.
I PROBLEMI S MEMORIJOM: R upisuje skoro sve podatke umemoriju. I to može biti problem. Za velike skupove podataka(poput onih u genetici) R može biti beskorisan (kao i drugi sličniprogrami), pa se u tim situacijama razvijaju posebni programi zaobradu podataka, a u R-u se razvijaju prototipovi programa. Dioproblema se može riješiti korištenjem baza podatka, jer R možepristupiti skoro svim bazama. Podatke možemo pohraniti u bazamapodatka i povući ih kad nam trebaju. Inače, Windowsi stavljajudodatno ograničenje na memoriju, pa problemi s memorijom se češćedogađaju korisnicima tog OS-a.
FINANCIJSKI PRAKTIKUM
UVOD U R
Zašto ne nešto drugo?
Postoje brojni (besplatni i komercijalni) software-i za numeričko računanjekoji imaju implementirane statističke funkcije (Matlab, Octave, Scilab).
R, za razliku od njih, je statistički software i s te strane je bitnorazvijeniji.
Naravno, ako su nam potrebni neki numerički alati iz obrade signala(poput Fourrierove transformacije, transformacije valića . . . ), Scilab iliMatlab bit će bolji izbor.
FINANCIJSKI PRAKTIKUM
UVOD U R
Vodeći statistički software
Na tržištu postoji mnogo statističkog software-a, kako komercijalnog,tako i besplatnog. Vodeći u ove dvije kategorije su SAS i R.
Brojne financijske institucije, auto industrija, naftne kompanije,. . . ukupno preko 45000 kompanija koristi SAS (u Hrvatskoj primjericeINA i Zagrebačka banka). Godišnja licenca za SAS na osobnom računalustoji 6000 $. (Ukupni prihodi proizvođača prelaze 2 milijarde $.)
Kako je R program otvorenog koda, kojeg se stalno dorađuje odpripadnika akademske zajednice i drugih, on je prema mišljenjima mnogihpo svojim mogućnostima bitno napredniji od SAS-a. Navodno, SASzaostaje 11 godina za R-om (u nekim bitnim svojstvima).
FINANCIJSKI PRAKTIKUM
UVOD U R
R ima sve više komercijalnih korisnika
R se većinom smatrao akademskim programom, no u posljednje vrijemeima sve više komercijalnih korisnika.
Postoje tvrtke koje pružaju podršku komercijalnim korisnicima, štoomogućava bezbrižnije korištenje ovog software-a.
Neki od korisnika R-a:I GoogleI PfizerI MerckI Bank of AmericaI InterContinental Hotels GroupI ShellI . . .
FINANCIJSKI PRAKTIKUM
UVOD U R
R okruženje
R je integrirani skup software-skih alata za manipuliranje podacima,računanje i grafičko prikazivanje.
R omogućujeI efektno rukovanje i spremanje podatakaI skup operatora za računanje po tablicama, osobito za računanje s
matricamaI veliku zbirku alata za analizu podatakaI velike grafičke mogućnosti, osobito za prikazivanje podataka na
ekranu i na papiruI jednostavan, dobro razvijen i efektan programski jezik
Mnoge slične naredbe iz programskog jezika C koristite se u R-u. Takođermože se lako proširiti korištenjem C/C++-a.
FINANCIJSKI PRAKTIKUM
UVOD U R
Početak rada u R-u I
Kao što je već navedeno R je besplatan i može se skinuti s web-stranice
http://r-project.org
Mi radimo pod Linux/Unix operativnim sustavom. (Za Windowsoperativni sustav situacija je gotovo ista.)
Kako bi pokrenuli R pokrećemo terminal.Sav rad koji ćemo napraviti na kolegiju bilo bi dobro spremiti u neki za toposebno stvoren direktorij. Stoga napravimo direktorij fp i uđimo u njega:
$ mkdir fp$ cd fp
R pokrećemo tako da upišemo:
$ R
FINANCIJSKI PRAKTIKUM
UVOD U R
Početak rada u R-u II
Sada na komandnu liniju možemo upisivati naredbe (o kojima ćemo neštoviše malo kasnije).Iz R okruženja izlazimo:
> q()
FINANCIJSKI PRAKTIKUM
UVOD U R
Elementarni tipovi podataka
I Numerički tipovi:> 42> 1.7+2.1> (3.7-85/7)*6+91.2222
I Tekstualni tipovi:> "a"> "duzi tekst"> "posebni znakovi \n \t \\ "
I Logički tipovi:> TRUE> FALSE> 2 < 7> (1 < 9) & ("a"=="b")
FINANCIJSKI PRAKTIKUM
UVOD U R
Jednostavne funkcije
Funkcije mogu imati razne tipove argumenata:
> sqrt(45)[1] 6.708204> exp(3)[1] 20.08554> nchar("sp2")[1] 3
Funkcije se mogu koristiti u raznim izrazima:
> nchar("stat") + 15 > sqrt(265)[1] TRUE
Pomoć o korištenju funkcija je lako dostupna:
> help("sqrt")> ?sqrt
FINANCIJSKI PRAKTIKUM
UVOD U R
Funkcije s više argumenata
Funkcije mogu imati više argumenata. Primjerice funkcija substr kojaispisuje pod-string prima argumente x (string), start (odakle počinepod-string) i stop (gdje završava pod-string). Realizacija može izgledatiovako:
> substr("abdce", 1, 3)[1] "abd"
No isti rezultat možemo dobiti i na ove načine:
> substr(x="abdce", start=1, stop=3)> substr("abdce", start=1, stop=3)> substr("abdce", sto=3, sta=1)> substr(sto=3, sta=1, x="abdce")> substr(3, sta=1, x="abdce")
FINANCIJSKI PRAKTIKUM
UVOD U R
Funkcije s deufault-nim argumentima
Neke funkcije, ako im se ne kaže drukčije, mogu imati argumente koji podefiniciji imaju neku razumnu vrijednost. Primjerice funkcija log jetakva, ona ima argumente x (broj koji želim logaritmirat) i base (bazupo kojoj ćemo logaritmirat).
Tako log(10) daje vrijednost ln 10, dok log(100,10) daje vrijednostlog10 100 = 2.
> log(100)[1] 4.60517> log(100,10)[1] 2> log(base=2,x=32)[1] 5> log(exp(1))[1] 1
FINANCIJSKI PRAKTIKUM
UVOD U R
Pohranjivanje vrijednosti u objekte
Izrazi se mogu dodijeliti slobodno imenovanim objektima.
> x <- sqrt(34)-3> tekst <- "nesto"> uvjet <- TRUE
Objekti vrednuju izraze koji su im dodijeljeni.
> x[1] 2.830952> tekst[1] "nesto"> uvjet[1] TRUE
FINANCIJSKI PRAKTIKUM
UVOD U R
Korištenje objekata
Objekti se mogu, na očekivani način, koristiti u izrazima.
> abs(x/7 - 1)[1] 0.5955783> uvjet & (2 < 3)[1] TRUE> substr(tekst,2,4)[1] "est"
FINANCIJSKI PRAKTIKUM
UVOD U R
Objekti i radni prostor
Svako dodjeljivanje vrijednosti nekom novom objektu stvara objekt uR-ovom radnom prostoru. Funkcija ls ispisuje popis svih (aktivnih)objekata.
> ls()[1] "tekst" "uvjet" "x"
Funkcija rm uklanja (briše) objekte iz radnog prostora.
> rm(uvjet)> ls()[1] "tekst" "x"> uvjetError: object "uvjet" not found
FINANCIJSKI PRAKTIKUM
UVOD U R
Nizovi podataka iste vrste
Konačan niz podataka istog tipa najjednostavnije zapisujemo u vektor.
> c(4, 5, 12, 8, 9, 12)[1] 4 5 12 8 9 12> c("Rudi", "Kristina", "Ivana")[1] "Rudi" "Kristina" "Ivana"> c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)[1] TRUE FALSE TRUE FALSE TRUE FALSE
Kao i sve ostalo i vektori se mogu pohraniti kao objekti.
> tezine = c(67, 75, 81, 62, 65, 72, 73, 65, 87, 69)> tezine[1] 67 75 81 62 65 72 73 65 87 69
FINANCIJSKI PRAKTIKUM
UVOD U R
Svaki vektor ima svoju duljinu i možemo odabrati element na k-tommjestu.
> length(tezine)[1] 10> tezine[4][1] 62
FINANCIJSKI PRAKTIKUM
UVOD U R
Korisne funkcije
Vektor je elementarna struktura podataka, pa možemo koristiti funkcijeza rad s vektorima.
> sum(tezine)[1] 716> sum(tezine)/length(tezine)[1] 71.6
Još neke korisne funkcije:
> sort(tezine)[1] 62 65 65 67 69 72 73 75 81 87> min(tezine)[1] 62
FINANCIJSKI PRAKTIKUM
UVOD U R
Statističke funkcije
Neke česte statističke funkcije:
> mean(tezine)[1] 71.6> sd(tezine)[1] 7.791734> range(tezine)[1] 62 87> summary(tezine)
Min. 1st Qu. Median Mean 3rd Qu. Max.62.0 65.5 70.5 71.6 74.5 87.0
FINANCIJSKI PRAKTIKUM
UVOD U R
Kraći načini kreiranja vektora
Slično kao u Matlab-u:
> 1:8[1] 1 2 3 4 5 6 7 8
Pravilni nizovi brojeva upisani u vektor:
> seq(1,10,by=2)[1] 1 3 5 7 9> seq(1,100, length=10)[1] 1 12 23 34 45 56 67 78 89 100
Ponavljanje vektora i dijelova vektora:
> rep(c(1,2,3), 4)[1] 1 2 3 1 2 3 1 2 3 1 2 3> rep(c(1,2,3), c(2,4,8))[1] 1 1 2 2 2 2 3 3 3 3 3 3 3 3
FINANCIJSKI PRAKTIKUM
UVOD U R
Dijelovi vektora 1
Možemo pojedini član vektora izvući.
> tezine[1][1] 67> tezine[length(tezine)][1] 69
Negativni indeks izbacuje članove vektora.
> a=1:8> a[-4][1] 1 2 3 5 6 7 8
Ispišimo dijelove ili izbacimo neke članove vektora tezine:
> tezine[3:7][1] 81 62 65 72 73> tezine[-c(1,8)][1] 75 81 62 65 72 73 87 69
FINANCIJSKI PRAKTIKUM
UVOD U R
Dijelovi vektora 2
Možemo koristiti logički vektor.
> log=tezine > 70> log[1] FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE> tezine[log][1] 75 81 72 73 87
FINANCIJSKI PRAKTIKUM
UVOD U R
Promjena vrijednosti u vektoru
Vrijednost pojedinog elementa mijenjamo na sljedeći način:
> x=1:10> x[1]=-1> x[1] -1 2 3 4 5 6 7 8 9 10
Slično radimo za vektore:
> x[1:5] = -x[1:5]> odd = 1:10 %% 2> odd[1] 1 0 1 0 1 0 1 0 1 0> x[odd==1] = x[odd==1] * 100
Isto se može napraviti za vektore s negativnim cijelim brojevima:
> x[-(1:5)] = rep(13, 5)
FINANCIJSKI PRAKTIKUM
UVOD U R
Vektorska aritmetika
Funkcije se primjenjuju na svaki pojedini element.
> visine = c(1.65, 1.56, 1.9, 1.32, 1.54,+ 1.78, 1.65, 1.5, 1.65, 2.03)> bmi = tezine/visine^2> round(bmi,1)[1] 24.6 30.8 22.4 35.6 27.4 22.7 26.8 28.9 32.0 16.7
Ako je jedan od vektora u binarnoj operaciji kraći, on će se ponovitionoliko puta koliko je manji (recycling).
> x=seq(100,600, by=100)> y=1:2> x+y[1] 101 202 301 402 501 602
FINANCIJSKI PRAKTIKUM
UVOD U R
Ovo se čak može napraviti za vektore koji čije dužine nisu višekratnicimanjeg (makar nema smisla to radit).
> z=1:3> y+z[1] 2 4 4Warning message:In y + z : longer object length is not a multipleof shorter object length
FINANCIJSKI PRAKTIKUM
UVOD U R
Nedostupne vrijednosti I
U nekim slučajevima vrijednosti elemenata vektora ne moraju bitipoznate. (Npr. za neke davne godine podaci su izgubljeni, a za tekućugodinu se još ne znaju.) U takvim slučajevima na mjesto rezervirano zanepoznatu vrijednost upisujemo posebnu vrijednost NA (marker) (NotAvailable).
Postoji još jedna vrsta brojeva koji su nedostupni. To brojevi nastaliizvođenjem (inače) nedefiniranih aritmetičkih operacija NaN (Not aNumber). (Kao rezultat 0/0 ili Inf-Inf dobivamo NaN-ove.)Funkcija is.na(x) ispituje koje vrijednosti u vektoru nisu poznate, ais.nan(x) gdje se nalaze NaN-ovi.
FINANCIJSKI PRAKTIKUM
UVOD U R
Nedostupne vrijednosti II
> x=c(1,2,3,NA,0/0)> x[1] 1 2 3 NA NaN> is.na(x)[1] FALSE FALSE FALSE TRUE TRUE> is.nan(x)[1] FALSE FALSE FALSE FALSE TRUE
FINANCIJSKI PRAKTIKUM
UVOD U R
Faktori za kategorizirane podatke
Kategorizirani podaci mogu se kodirati kao brojevi i stringovi.
> spol = rep(1:2, c(5,5))> tretman = rep(c("kontrola", "operacija"), c(5,5))
Općenito, bolje je te podatke pretvoriti u faktore.
> spol=factor(spol, level=c(1,2), labels=c("m","f"))> spol[1] m m m m m f f f f fLevels: m f
Za vektore stringova faktorizacija je još lakša.
> tretman=factor(tretman)> tretman[1] kontrola kontrola kontrola kontrola kontrola operacija operacija[8] operacija operacija operacijaLevels: kontrola operacija
FINANCIJSKI PRAKTIKUM
UVOD U R
Korisne stvari za rad s faktorima
Stavljanje podataka u tablicu:
> table(spol)spolm f5 5
Računanje po grupama s funkcijom tapply:
> prihod = c(12,13,14,12,9,11,23,6,11,17)> length(prihod)[1] 10> tapply(prihod,spol,mean)
m f12.0 13.6> tapply(prihod,spol,sd)
m f1.870829 6.542171
FINANCIJSKI PRAKTIKUM
UVOD U R
Matrice
Osnovne podatke možemo svrstati u matricu.
> matrix(1:9, nrow=3, ncol=3)[,1] [,2] [,3]
[1,] 1 4 7[2,] 2 5 8[3,] 3 6 9
Dovoljno je navesti samo broj stupaca ili sam broj redaka za formiranjematrice.
> matrix(c("a", "b", "c", "d"), nrow=2, byrow=TRUE)[,1] [,2]
[1,] "a" "b"[2,] "c" "d"
FINANCIJSKI PRAKTIKUM
UVOD U R
Matrice kao kombinacije vektora
Matrice se mogu sastaviti po stupcima.
> mat1=cbind(visine, tezine, bmi)> mat1
visine tezine bmi[1,] 1.65 67 24.60973[2,] 1.56 75 30.81854[3,] 1.90 81 22.43767[4,] 1.32 62 35.58310[5,] 1.54 65 27.40766[6,] 1.78 72 22.72440[7,] 1.65 73 26.81359[8,] 1.50 65 28.88889[9,] 1.65 87 31.95592
[10,] 2.03 69 16.74392
FINANCIJSKI PRAKTIKUM
UVOD U R
Indeksiranje matrica
Pojedini elementi iz matrice se mogu izvući korištenjem [] i brojeva kojioznačavaju mjesto u matrici.
> mat1[3,3]bmi
22.43767
2. red matrice dobivamo ovako:
> mat1[2,]visine tezine bmi
1.56000 75.00000 30.81854
3. stupac ovako:
> mat1[,3][1] 24.60973 30.81854 22.43767 35.58310 27.40766 22.7244026.81359 28.88889[9] 31.95592 16.74392
FINANCIJSKI PRAKTIKUM
UVOD U R
Indeksiranje matrica - imena redaka i stupaca
Tamo gdje je definirano možemo služiti imenima redaka i stupaca.
> mat1[,"tezine"][1] 67 75 81 62 65 72 73 65 87 69
FINANCIJSKI PRAKTIKUM
UVOD U R
Aritmetika matrica
Slično kao kod vektora:
> mat2 = matrix(1:9, nrow=3)> mat3 = matrix(1, nrow=3, ncol=3)> mat2 + mat3> mat2 + 10
Funkcije se mogu izvoditi po retcima i stupcima.
> apply(mat2, 1, min) # minimum elemenata po recima> apply(mat2, 2, mean) # art. sred. elem. po stupcima
Standardne matrične operacije se mogu izvoditi.
> t(mat2)> mat2 %*% mat3
FINANCIJSKI PRAKTIKUM
UVOD U R
Okviri podataka : kombiniranje različitih tipova podataka
Vektore svih tipova podataka možemo kombinirati.
> pred = bmi > 25> pusaci = factor(c(1,2,1,2,3,3,1,1,2,3), levels=1:3,+ labels=c("da","ne","nekoc"))> df1 = data.frame(tezine, visine, pred, pusaci)> df1[1:7,]
tezine visine pred pusaci1 67 1.65 FALSE da2 75 1.56 TRUE ne3 81 1.90 FALSE da4 62 1.32 TRUE ne5 65 1.54 TRUE nekoc6 72 1.78 FALSE nekoc7 73 1.65 TRUE da
Okviri podataka (data frame) su osnovna struktura podataka za svakusloženiju analizu podataka.
FINANCIJSKI PRAKTIKUM
UVOD U R
Okviri podataka : indeksiranje
Svako indeksiranje koje je vrijedilo za matrice vrijedi i za okvire podataka:
I vektori cijelih brojevaI logički vektoriI imena stupaca
Posebno stupci/varijable mogu se doseći korištenjem znaka $:
> df1$tezine[1] 67 75 81 62 65 72 73 65 87 69
Ime ne mora biti do kraja napisano.
> df1$tez[1] 67 75 81 62 65 72 73 65 87 69
FINANCIJSKI PRAKTIKUM
UVOD U R
Funkcije su također objekti
Definiciju svake funkcije dobivamo tako da napišemo njezino ime.
> logfunction (x, base = exp(1)) .Primitive("log")
Funkcije se jednostavno definiraju.
> moja_sredina = function(x) sum(x)/(length(x)+1)> moja_sredina(tezine)[1] 65.09091
FINANCIJSKI PRAKTIKUM
UVOD U R
Klase, objekti, metode
Iste funkcije mogu imati različite vrste rezultata ovisno o podacima.
> summary(tezine)Min. 1st Qu. Median Mean 3rd Qu. Max.62.0 65.5 70.5 71.6 74.5 87.0
> summary(pusaci)da ne nekoc4 3 3
Ovisi o klasi (class) objekta:
> class(tezine)[1] "numeric"> class(pusaci)[1] "factor"
FINANCIJSKI PRAKTIKUM
UVOD U R
Klase, objekti, metode
summary je generička metoda koja ima različite metode za različiteobjekte.
> summaryfunction (object, ...)UseMethod("summary")<environment: namespace:base>
FINANCIJSKI PRAKTIKUM
UVOD U R
Pohranjivanje radnog prostora
Kako bi pohranili sve objekte u radnom prostoru to radimo naredbom
> save.image()
koja pohranjuje radni prostor u datoteku .RData. (Može se izabrati idrugo ime i lokacija.)Učitavanje pohranjenog prostora u tekući radni prostor radimo naredbom
> load(".RData")
Tekući direktorij i njegov sadržaj dobivamo sljedećim naredbama.
> getwd()> dir(getwd())
A direktorij mijenjamo ovako:
> setwd("~")
FINANCIJSKI PRAKTIKUM
UVOD U R
Čitanje datoteka u R-u
Podaci su često pohranjeni u raznim datotekama, pa kako ne bi ručnounosili podatke, učitat ćemo ih iz datoteke.Za tekstualne datoteke imamo sljedeće mogućnosti
I Fleksibilna naredba read.table.I Za velike količine podataka scan.
Mnogi podaci se nalaze u Excel datotekama. Za takve na raspolaganju sunam sljedeće mogućnosti.
I izvoz u format tab-delimited/csv text filesI korištenje paketa xlsReadWrite (Windows)I paket gdata (traži Perl - lako pod Unix-om)
Postoje još paketi unošenje podataka iz baza podataka (MySQL) idrugog statističkog software-a (Matlab, Ocatve, SAS,. . . ).
FINANCIJSKI PRAKTIKUM
UVOD U R
Primjer unošenja podataka iz Excel datoteke
Prvo treba podatke izvesti u csv-format (File → Save As →. . . ). (Ovomožemo napraviti i pod Linux-om putem Open Office-a.)Sada podatke unosimo na sljedeći način:
podaci <- read.csv("podaci.csv", header=T, dec=",", sep=";")
(Uočimo da Excel koristi decimalni zarez umjesto točke, pa smo to inaznačili. Podaci su prilikom izvoza u csv-datoteku (ako drukčije nespecificiramo) razdvojeni s ’;’, pa je i to spomenuto.)
FINANCIJSKI PRAKTIKUM
UVOD U R
Spremanje rezultata
Cut & paste za manje stvari.save i load za spremanje pojedinih objekata.
> save(df1,file="df1.RData")> load("df1.RData")
Preusmjeravanje numeričkih rezultata u datoteku.
> sink("rezultati.txt")> summary(tezine)> sink()> file.show("rezultati.txt")
FINANCIJSKI PRAKTIKUM
UVOD U R
Spremanje koda
Naredba history ispisuje zadnje naredbe, a pomoću savehistoryspremamo te naredbe.
> history()> savehistory()> load(".Rhistory")
Ime datoteke se može promijeniti.Ako imamo datoteku s naredbama koje želimo izvršiti to radimo putemnaredbe source.
> source("naredbe.txt")
FINANCIJSKI PRAKTIKUM
UVOD U R
Grafički prikazi - uvod
Grafika je vrlo značajan dio R okruženja.
Moguće je koristiti brojne vrste statističkih grafova kao i napravitipotpuno nove tipove grafova.
R omogućava interaktivno korištenje grafike.
R prilikom pokretanja ima spreman grafički device driver, koji će prilikomizdavanja naredbe pokrenuti poseban grafički prozor. Makar se to radiautomatski, dobro je znati da se pritom koristi naredba X11() (podUNIX-om) ili windows() (pod Windows-om).
FINANCIJSKI PRAKTIKUM
UVOD U R
Grafički prikazi - tipovi naredbi
Naredbe se dijele u tri tipa:I Funkcije za crtanje visokog nivoa (high-level) crtaju grafove, po
mogućnosti s osima, oznakama, nazivima . . .I Funkcije za crtanje niskog nivoa (low-level) dodaju na postojeći
graf dodatne informacije poput novih točaka, linija i oznaka.I Interaktivne grafičke funkcije koje omogućavaju dodavanje i
uzimanje podataka na grafu.Bez dodatnih paketa u R-u koristimo se samo osnovnom grafikom.Dodatni paketi koji mogu biti korisni su grid i lattice.
FINANCIJSKI PRAKTIKUM
UVOD U R
Grafičke funkcije visokog nivoa - plot
Jedna od najosnovnijih grafičkih funkcija visokog nivoa je plot. Naredbaplot(x,y), kao argumente uzima dva vektora x = (x1, x2, . . .) iy = (y1, y2, . . .), a vraća grafički prikaz točka (x1, y1), (x2, y2), . . .
> plot(visine, tezine)
1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.06
57
07
58
08
5
visine
tezin
e
Isti učinak možemo dobiti sa plot(xy) ako je xy dvostupčasta matricaili lista s dva vektora.
Ako je x vektor duljine n, naredba plot(x) će nacrtati točke (1, x1), . . . ,(n, xn).
FINANCIJSKI PRAKTIKUM
UVOD U R
plot za faktore
Naredba plot(f) gdje je f faktor crta stupčasti dijagram.
> plot(pusaci)
da ne nekoc
01
23
4
Ako je y neki numerički vektor, onda plot(f,y), crta dijagramepravokutnika za svaki nivo od f .
> plot(pusaci, tezine)
FINANCIJSKI PRAKTIKUM
UVOD U R
plot za okvire podataka i liste objekata
Za okvir podataka df naredba plot(df) crta usporedbu svih vektorapodataka u tom okviru.
>plot(df1)
Neka je expr lista objekata spojena s znakom ’+’. Tada plot(~expr)crta usporedbe objekata u listi, a plot(y~expr) usporedbu y saobjektima iz expr .
>plot(~tezine+visine)>plot(bmi~tezine+visine)
FINANCIJSKI PRAKTIKUM
UVOD U R
Normalni vjerojatnosni graf i histogram
> qqnorm(x)> qqline(x)
Prva naredba crta točke, a druga pravac kod normalnog vjerojatnosnoggrafa.
> hist(tezine)
Histogram of tezine
tezine
Fre
qu
en
cy
60 65 70 75 80 85 90
0.0
0.5
1.0
1.5
2.0
2.5
3.0
Crta histogram podataka. Mogući argument nclass=n ili breaks=b.
FINANCIJSKI PRAKTIKUM
UVOD U R
Grafičke funkcije niskog nivoa - dodavanje točaka i linija
> points(visine,tezine,col=’red’)> lines(tezine,visine,lty=2,lwd=2)
Prva naredba dodaje crvene točke na crtež tako da prvu koordinatu uzmeiz vektora x , a drugu iz vektora y . Druga naredba dodaje debljuisprekidanu liniju koja spaja točke.
> abline(a,b)
Dodaje pravac s koeficijentom smjera b i slobodnim članom a napostojeći crtež.
FINANCIJSKI PRAKTIKUM
UVOD U R
Vjerojatnosne funkcije
R može zamijeniti cijelu zbirku statističkih tablica. Od vjerojatnosnihfunkcija R zna odrediti vrijednosti funkcije distribucije, gustoće, funkcijukvantila i zna simulirati uzorak iz zadane distribucije.
Distribucija Oznaka u R-u dodatni argumentibeta beta shape1, shape2, ncpbinomna binom size, probCauchyjeva cauchy location, scaleχ2 chisq df, ncpeksponencijalna exp rateFisherova f df1, df2, ncpΓ gamma shape, scalegeometrijska geom probhipergeometrijska hyper m, n, knormalna norm mean, sdPoissonova pois lambdaStudentova (t) t df, ncpuniformna unif min, maxWilcoxonova wilcox m, n
FINANCIJSKI PRAKTIKUM
UVOD U R
Simulacija uzorka duljine n
Kod simulacija ispred imena distribucije lijepimo ’r’. Prvi argumentfunkcije rxxxx je duljina uzorka, a onda slijede argumenti distribucije.Napravimo uzorak duljine 200 iz B(5, 0.3) i nacrtajmo histogramrelativnih frekvencija.
> uz=rbinom(200,5,0.3)> hist(uz, col=’green’, probability=TRUE)
Histogram of uz
uz
De
nsity
0 1 2 3 4 5
0.0
0.1
0.2
0.3
FINANCIJSKI PRAKTIKUM
UVOD U R
Funkcija gustoće
Kako bi dobili vrijednost funkcije gustoće iz neprekidne razdiobe xxxx,ispred oznake stavljamo ’d’. Prvi argument funkcije dxxxx je x kojioznačava točku u kojoj želimo izračunati vrijednost funkcije gustoće.Nacrtajmo na prethodnom histogramu graf funkcije gustoće razdiobeN(1.5, 1.05).
> x=seq(-0.5,5.5,0.1)> lines(x,+ dnorm(x,1.5,sqrt(1.05)),+ col=’red’,lwd=3,lty=2)
Histogram of uz
uz
De
nsity
0 1 2 3 4 5
0.0
0.1
0.2
0.3
Oprez! Argument kod funkcija za norm je standardna devijacija, a nevarijanca kako uobičajeno pišemo.
FINANCIJSKI PRAKTIKUM
UVOD U R
Funkcije distribucije i kvantila
Za dobivanje vrijednosti funkcije distribucije razdiobe xxxx, ispred oznakestavljamo ’p’. Prvi argument funkcije pxxxx je točka u kojoj želimoizračunati vrijednost funkcije.
Za dobivanje vrijednosti q-kvantila radimo ispred oznake razdiobe pišemo’q’, a prvi argument funkcije qxxxx je q.
Funkcije imaju ugrađen logički argument lower.tail, koji ispitujegledamo od početka ili od kraja. Odnosno (ako je vrijednost TRUE)vjerojatnost da vrijednost sl. varijable bude manja ili jednaka od x , ili akoje argument FALSE vjerojatnost da je vrijednost veća od x . Slično je i zagornji odnosno donji kvantil.
FINANCIJSKI PRAKTIKUM
UVOD U R
Dva primjera
Za dvostrani t-test (s 13 stupnjeva slobode), odredimo p-vrijednost, akoje realizacija testne statistike bila 2.34.
> 2*pt(2.34,df=13, lower.tail=FALSE)[1] 0.03588854
Odredimo 90% pouzdani interval za distribuciju F (2, 3). Prvoodređujemo donji, a onda gornji 5%-kvantil.
> c(qf(0.05,2,3), qf(0.05,2,3,lower.tail=FALSE))[1] 0.05218038 9.55209450
FINANCIJSKI PRAKTIKUM
UVOD U R
Kolmogorov - Smirnovljev test
Jedan od najpoznatiji testova kojima se ispituje pripadnost slučajnoguzorka nekoj distribuciji provodi se relativno lako u R-u.
ks.test(uzorak,"ime_distribucije", argumenti_distribucije)
Promatrajmo simulirani uzorak duljine 200 iz B(5, 0.3). Testirajmopripada li on distribuciji N(1.5, 1.05).
> ks.test(uz,"pnorm",1.5,sqrt(1.05))
One-sample Kolmogorov-Smirnov test
data: uzD = 0.2472, p-value = 4.84e-11alternative hypothesis: two-sided
KS test, zbog male p-vrijednosti, potvrđuje da uzorak nije iz normalnedistribucije.
FINANCIJSKI PRAKTIKUM
UVOD U R
Uvjetne naredbe, grupirani izrazi i petlje
R ima mogućnost zadavanja uvjetnih naredbi. Oblik tih naredbi jestandardan (slično kao u C-u)
> if (iz_1) iz_2 else iz_3
Naredbe se mogu grupirati u vitičastim zagradama ovako{iz_1; ... iz_n;}. Dakle, R podržava grupirane izraze.
U R-u postoji mogućnost zadavanja for petlji. One su oblika
> for (name in iz_1) iz_2
ime je varijabla, iz_1 je vektor (obično niz poput 1:10), a iz_2 jegrupirani izraz.
FINANCIJSKI PRAKTIKUM
UVOD U R
Drugi oblici petlji i prekidi petlji
Drugi oblici petlji su
> repeat iz
i
> while (uvjet) iz
Naredba break prekida petlju i izlazi iz nje, dok naredba next prekidatrenutni ciklus i prelazi na sljedeći. break je jedini način prekidanjarepeat petlje.
FINANCIJSKI PRAKTIKUM
UVOD U R
Monte Carlo simulacije - primjer
Procijenimo zapreminu 4-dimenzionalne jedinične kugle koristeći jakizakon velikih brojeva. Koristeći centralni granični teorem dajteasimptotsku ocjenu 90% pouzdanog intervala.
Rješenje. Neka je (Yn) niz n.j.d. slučajnih vektora uniformnodistribuiranih na [−1, 1]4. Definiramo n.j.d. sl. varijable
Xn := 1‖Yn‖≤1.
Kako je
EXn =λ(4)(K (0, 1))
λ(4)([−1, 1]4)= λ(4)(K (0, 1))/16,
vrijedi da je
16 · limn→∞
X1 + . . .+ Xn
n= λ(4)(K (0, 1)).
FINANCIJSKI PRAKTIKUM
UVOD U R
Monte Carlo simulacije - primjer
Procijenimo zapreminu 4-dimenzionalne jedinične kugle koristeći jakizakon velikih brojeva. Koristeći centralni granični teorem dajteasimptotsku ocjenu 90% pouzdanog intervala.Rješenje. Neka je (Yn) niz n.j.d. slučajnih vektora uniformnodistribuiranih na [−1, 1]4. Definiramo n.j.d. sl. varijable
Xn := 1‖Yn‖≤1.
Kako je
EXn =λ(4)(K (0, 1))
λ(4)([−1, 1]4)= λ(4)(K (0, 1))/16,
vrijedi da je
16 · limn→∞
X1 + . . .+ Xn
n= λ(4)(K (0, 1)).
FINANCIJSKI PRAKTIKUM
UVOD U R
Monte Carlo simulacije - primjer
Procijenimo zapreminu 4-dimenzionalne jedinične kugle koristeći jakizakon velikih brojeva. Koristeći centralni granični teorem dajteasimptotsku ocjenu 90% pouzdanog intervala.Rješenje. Neka je (Yn) niz n.j.d. slučajnih vektora uniformnodistribuiranih na [−1, 1]4. Definiramo n.j.d. sl. varijable
Xn := 1‖Yn‖≤1.
Kako je
EXn =λ(4)(K (0, 1))
λ(4)([−1, 1]4)= λ(4)(K (0, 1))/16,
vrijedi da je
16 · limn→∞
X1 + . . .+ Xn
n= λ(4)(K (0, 1)).
FINANCIJSKI PRAKTIKUM
UVOD U R
Za veliki n volumen kugle procjenjujemo s 16Xn. Napravimo sadasimulaciju.
> n=10^7> y=runif(n,-1,1)> n=n/4;> s=0; #brojimo koliko puta smo pogodili unutar kugle> un_kug=function(w){ #funkcija vraca 1 ako je w unutar kugle, inace 0+ if(w[1]^2+w[2]^2+w[3]^2+w[4]^2<=1) 1+ else 0;+ }> for(k in 0:(n-1))+ s=s+un_kug(y[(4*k+1):(4*k+4)])> 16*s/n[1] 4.939514
Kako je λ(4)(K (0, 1)) = π2/2, stvarni rezultat bi bio približno
> pi^2/2[1] 4.934802
FINANCIJSKI PRAKTIKUM
UVOD U R
Vrijedi Xn ∼ B(p) gdje je p = EXn. Znamo (CGT)
Xn − p√Xn(1− Xn)
√n ∼ AN(0, 1).
Zato je
P
(| Xn − p√
Xn(1− Xn)| ≤ zα/2
)≈ 1− α,
odnosno [16Xn ∓
16zα/2√n
√Xn(1− Xn)
](1− α)100% pouzdani interval za λ(K (0, 1)).
FINANCIJSKI PRAKTIKUM
UVOD U R
Vrijedi Xn ∼ B(p) gdje je p = EXn. Znamo (CGT)
Xn − p√Xn(1− Xn)
√n ∼ AN(0, 1).
Zato je
P
(| Xn − p√
Xn(1− Xn)| ≤ zα/2
)≈ 1− α,
odnosno [16Xn ∓
16zα/2√n
√Xn(1− Xn)
](1− α)100% pouzdani interval za λ(K (0, 1)).
FINANCIJSKI PRAKTIKUM
UVOD U R
Vrijedi Xn ∼ B(p) gdje je p = EXn. Znamo (CGT)
Xn − p√Xn(1− Xn)
√n ∼ AN(0, 1).
Zato je
P
(| Xn − p√
Xn(1− Xn)| ≤ zα/2
)≈ 1− α,
odnosno [16Xn ∓
16zα/2√n
√Xn(1− Xn)
](1− α)100% pouzdani interval za λ(K (0, 1)).
FINANCIJSKI PRAKTIKUM
UVOD U R
Pretočeno u R:
> z=qnorm(0.95,0,1) #z_alpha/2> x=s/n> po_in=c(16*x-16*z/sqrt(n)*sqrt(x*(1-x)),+ 16*x+16*z/sqrt(n)*sqrt(x*(1-x)))> po_in[1] 4.931824 4.947203
J
FINANCIJSKI PRAKTIKUM
UVOD U R
Monte Carlo za računanje integrala
Kada imamo funkciju f : Rn → R (neka bude neprekidna) i na(omeđenom) Borelovom skupu A ⊆ Rn želimo izračunati integral
I :=
∫Af (x) dx,
to također možemo napraviti Monte Carlo metodom.
Ako je X slučajni vektor s gustoćom fX(x) = 1λ(n)(A)
1A(x), tada jeY = f (X) slučajna varijabla, a
E[Y ] =1
λ(n)(A)
∫Af (x) dx.
FINANCIJSKI PRAKTIKUM
UVOD U R
Monte Carlo za računanje integrala
Kada imamo funkciju f : Rn → R (neka bude neprekidna) i na(omeđenom) Borelovom skupu A ⊆ Rn želimo izračunati integral
I :=
∫Af (x) dx,
to također možemo napraviti Monte Carlo metodom.Ako je X slučajni vektor s gustoćom fX(x) = 1
λ(n)(A)1A(x), tada je
Y = f (X) slučajna varijabla, a
E[Y ] =1
λ(n)(A)
∫Af (x) dx.
FINANCIJSKI PRAKTIKUM
UVOD U R
Ako simuliramo niz n.j.d. vektora (Xn) s gustoćom fX(x) = 1λ(n)(A)
1A(x),onda definirajmo niz (Yn) sa Yn := f (Xn). Zbog jakog zakona velikihbrojeva, za velike n integral I možemo procijeniti sa
λ(n)(A)Yn,
a zbog CGT-a vrijedi i
Yn − 1λ(n)(A)
I
SYn
√n ∼ AN(0, 1).
((SY
n)2
= 1n−1
(∑nk=1 Y
2k − nY 2
n))
FINANCIJSKI PRAKTIKUM
UVOD U R
Ako simuliramo niz n.j.d. vektora (Xn) s gustoćom fX(x) = 1λ(n)(A)
1A(x),onda definirajmo niz (Yn) sa Yn := f (Xn). Zbog jakog zakona velikihbrojeva, za velike n integral I možemo procijeniti sa
λ(n)(A)Yn,
a zbog CGT-a vrijedi i
Yn − 1λ(n)(A)
I
SYn
√n ∼ AN(0, 1).
((SY
n)2
= 1n−1
(∑nk=1 Y
2k − nY 2
n))
FINANCIJSKI PRAKTIKUM
UVOD U R
Zadatak
Neka je f : R3 → R neprekidna, zanima nas ocjena integrala∫∫∫[−1,1]×[0,1]×[−3,2]
f (x , y , z) dx dy dz .
Napišite funkciju integral koja će Monte Carlo metodom računatiprocjenu i 95% pouzdani interval gornjeg integrala. Kao argumentefunkcije uzmite funkciju f i n broj simulacija koje izvodite. Na kraju,neka funkcija ispiše vaše ime i prezime.Kao testni primjer uzmite funkciju
f (x , y , z) =2x
y2 + x2 + 1e−y2z2+x3
sin2(xz)
i n = 106.
FINANCIJSKI PRAKTIKUM
UVOD U R