200 likes | 365 Views
Uvod u R. Kurs: vremenske serije i primene u finansijama. Instalacija programa. http://cran.r-project.org/ - Download R for Windows Instalacija paketa - Packages -odabrati željeni paket, sačuvati ga
E N D
Uvod u R Kurs: vremenske serije i primene u finansijama
Instalacija programa • http://cran.r-project.org/ -Download R for Windows • Instalacija paketa -Packages -odabrati željeni paket, sačuvati ga -u Main menu-ju programa kliknuti na Packages->Install Package(s) from local zip files -aktivacija paketa: Packages->Load Package • Istalacija paketa, direktno iz programa (korisnik mora biti konektovan na internet) -Packages->Install Package… -
Osnovni objekti i operacije sa njima -više o njima na starnici http://cran.r-project.org/doc/manuals/R-intro.pdf
Vektori numeričkog tipa • niz1<-c(1,2,3,4,5,6) ili niz1=c(1,2,3,4,5,6) • niz1<-1:6 • niz1=seq(from=1,to=6, by=1) • niz=seq(from=1,to=5,length=100) elementi vektora ne mora da budu celobrojnog tipa • Indeksiranje: prvi član je numerisan jedinicom niz1[3] [1] 3 -više članova istovremeno niz1[c(2,3,4)]indeksni niz [1] 2 3 4 može i ovako: niz1[(niz1>=2)&(niz1<5)] [1] 2 3 4 Objašnjenje: niz1>=2 je vektor čiji su elementi logičkog tipa, na i-tom mestu se nalazi TRUE ako je uslov zadovoljen, u suprotnom FALSE
Vektori numeričkog tipa • Mogu se primenjivati operacije na sve članove niza niz2=niz1+0.5 niz2 [1] 1.5 2.5 3.5 4.5 5.5 6.5 niz3=2*niz1+niz2 > niz3 [1] 3.5 6.5 9.5 12.5 15.5 18.5 • Ili samo na neke članove niza niz3[c(1,3,5)]=niz3[c(2,4,6)] niz3 [1] 6.5 6.5 12.5 12.5 18.5 18.5
Vektori numeričkog tipa • Neke od osnovnih funkcija sa vektorima ovog tipa (ne zahteva se instalacija dodatnih paketa): length(niz1) #dužina niza niz1 [1] 6 sum(niz1) # suma elemenata [1] 21 mean(niz1) #aritmetička sredina [1] 3.5 var(niz1) # popravljena uzoračka disperzija [1] 3.5 median(niz1) # mediajana niza niz1 [1] 3.5 max(niz1) # maksimum; min(niz1) #minimum
Vektori čiji su elementi: • Stringovi reci=c("moja","mama") brojevi=c("1","2","3") brojevi [1] "1" "2" "3“ as.integer(brojevi) [1] 1 2 3 • Logičkog tipa
Višedimenzionalni nizovi • z=array(niz1,dim=c(2,3)) [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 z[i,j]-element u preseku i-te vrste I j-te kolone z[i,]- i-ta vrsta z[,j]- j-ta kolona • zz=matrix(niz1,nrow=2,ncol=3) zz [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
Obeležje • a)numeričko(težina, visina) • b)kategoričko (pol, verska pripadnost, boja očiju...) Faktori Za unos kategoričkih obeležja(categorical variable) u bazu podataka se obično koristi neki numerički kod faktor ima skup nivoa(levels) -nominalna i ordinalna
Obeležje pol=c(1,1,1,2,1,1,1,2,2,2) Pol<-factor(pol,levels=c(1,2)) levels(Pol)=c("muski","zenski") bol<-c(1,4,4,3,2,2,2,2,1,4) Bol<-factor(c(bol),levels=1:4) levels(Bol)<-c("nema","blag","osrednji","jak") summary(Bol) summary() summary(Pol) muski zenski 6 4 summary(Bol) nema blag osrednji jak 2 4 1 3
Liste Koriste se za kombinovanje više objekata(na pr. vektora) u jedan složeni objekat X-predmenstrualni energetski unos,Y-postmenstrualni energetski unos • unos.pre=c(5260,5470,5640,6180,6390,6515,6805,7515,7515,8230,8770) • unos.posle=c(3910,4220,3885,5160,5645,4680,5265,5975,6790,6900,7335) • lista=list(pre=unos.pre,posle=unos.posle) • lista • $pre • [1] 5260 5470 5640 6180 6390 6515 6805 7515 7515 8230 8770 • $posle • [1] 3910 4220 3885 5160 5645 4680 5265 5975 6790 6900 7335
Baze podataka • Lista vektora i/ili faktora iste duzine tako da podaci na istoj poziciji(u istoj vrsti) poticu od iste eksperimentalne jedinice • baza=data.frame(unos.pre,unos.posle) baza unos.pre unos.posle 1 5260 3910 2 5470 4220 3 5640 3885 4 6180 5160 5 6390 5645 6 6515 4680 7 6805 5265 8 7515 5975 9 7515 6790 10 8230 6900 11 8770 7335 Pristup:$notacija baza$unos.pre
Baze podataka • Izdvajanje podbaza baza=subset(baza,unos.pre>6000) • baza[5,] unos.pre unos.posle 8 7515 5975 • baza$unos.pre[baza$unos.posle>5000] [1] 6180 6390 6805 7515 7515 8230 8770 apply(X, MARGIN, FUN, ...)
Funkcije imef<-function(arg1,arg2,…argK) { telo funkcije…. #promenljive koje se definisu u okviru funkcije su lokalne return(izlaz) }
Funkcije Primer: • popust8Mart<-function(cene) • #na artike cene 1000-1999 je popust 10%, a na skuplje artikle 20% • { • cena=cene • n=length(cene) • for(i in 1: length(cene)) • { • if(cene[i]>=2000) cena[i]=0.8*cene[i] • else if (cene[i]>=1000) cena[i]=0.9*cene[i] • else cena[i]=cene[i] • } • return(cena) • }
Čitanje iz fajla • niz=scan("niz.txt",sep="") • N=scan(””,1) niz=scan(””,N) Više informacija o ovoj funkciji mogu se dobiti komandom help(scan)
Grafičko predstavljanje podataka • plot(x, y, ...) help(plot) plot(unos.pre,unos.posle,pch=2) pch-oblik tačkica type: “l”-linija “s”-stepenice “b”-linije I tačke . . . lwd-debljina linije main=“Naslov garfika” … xlab=“promenljiva na x-osi ylab=“promenljiva na y-osi”” xliim=c(a,b) #a,b-koordinate granica
Grafičko predstavljanje podataka hist(x, ...) freq=FALSE = probability=TRUE histogram gustine Default vrednost: TRUE I podrazumeva se ekvidistantan histogram breaks=niz granica Ili =br. Ćelija -1 barplot(height, ...) pie(x,..)
Raspodele • Za svaku raspodelu može se izračunati -vrednost funkcije gustine ili verovatnoće(za diskretene sl.v.) u tački (d) -vrednost funkcije raspodele u tački (p) -kvantili (q) -pseudoslučajni brojevi (r)
Raspodele pexp rpois df pt dgeom • Primeri runif(20)# dobija se vektor 20 pseudoslučajnih brojeva iz uniformne U[0,1] raspodele dbinom(4,size=20, prob=0.2) #verovatnoća da se od 20 nezavisnih eksperimenata (p realizacije je 0.2) realizuju 4 (Binomna raspodela) pnorm(0.3,mean=0,sd=1) #vrednost funkcije raspodele sl. Veličine koja ima N(0,1) raspodelu u tački x=0.3 qchisq(p=0.95,df=4) # vrednost x u kome je vrednost funkcije raspodele 0.95