# http://biecek.pl/R/Rwydanie2.pdf # # http://r.meteo.uni.wroc.pl/ # # https://www.rstudio.com/ # # https://www.rstudio.com/products/RStudio/ # # https://cran.r-project.org/web/views/Finance.html setwd("") ############## Podstawy R ######################## #Podstawowe operacje arytmetyczne 1+2 1/2 log(1) log(exp(1)) log(exp(10^9)) exp(10^9) sin(pi/2) factorial(4) ?factorial ################################################## #Pomoc help.start() help.search("integral") ?integrate ?seq ?factorial seq(1, 60, by = 2) seq(0, 1, length.out=11) seq(17) ################################################## #Podstawowe operacje na wektorach x=c(1,2,3,4) x x<-c(2,4,5) x y<-1:4 y is.vector(y) y<-seq(1,3) y (y<-seq(1,3)) y+2 (y+1)/100 y^2 x+y 3*(x-y)+x*y x<-c(10,-2,30,-4) x[2] x[c(1,3)] x>0 x[x>0] seq(-1,3,by=.2) rep(c(1,3),5) seq(1,3,len=10) ?seq x<-c(2,4,5); y<-c(1,3,2) x+y; x*y+2 notowania<-c(10,11,9,6,8) notowania names(notowania)<-c("PN","WT","SR","CZW","PT") notowania notowania["PN"] w<-c(1,2,1,3,1,2,4,3,2); w wfact<-factor(w); wfact summary(wfact) plot(wfact) table(w) summary(wfact) ################################################## #Podstawowe statystyki help(sum) sum(y) length(y) mean(y) ? mean var(y) ?var sum((y-mean(y))^2/(length(y)-1)) sd(y) median(y) table(y) zakres<-max(y)-min(y);zakres IQR(y) ?IQR summary(y) ################################################## v<-vector("double",10) v<-v+10 v[3]<-5 v 2->v[4] v #Podstawowe operacje na macierzach m<-matrix(c(1,2,3,11,12,13)) m dim(m) m <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol=3, byrow=TRUE, dimnames = list(c("w1", "w2"), c("c1", "c2", "c3"))) m dim(m) dim(m)<-c(3,2) m <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol=3, byrow=FALSE, dimnames = list(c("w1", "w2"), c("c1", "c2", "c3")));m crossprod(m)#c1*c1,c1*c2 itd sum(m) sum(m[,2]) m["w1",2] m[2,3] 100+m w<-c(1:10);w dim(w)<-c(5,2);w nw<-cbind(w,100);nw nw<-rbind(nw,-12);nw ########################################### #Rysujemy i wyrabiamy intuicj? demo(graphics) ?dnorm postscript("NormalDensity.ps",width=6,height=6,horizontal=FALSE) par(mfrow=c(1,1)) curve(dnorm(x,mean=0.5,sd=0.5), from = -5, to = 5, col = "red", lwd = 2,main = "NormalDensity") curve(dnorm(x,mean=-0.5,sd=2), from = -5, to = 5, col = "slategray", lwd = 2,main = "",add=TRUE) curve(dnorm, from = -5, to = 5, col = "blue", lwd = 3,main = "",add=T) text(-5, 0.4, expression("N(0.5,0.5)"), adj = 0) text(-5, 0.3, expression("N(-0.5,2)"), adj = 0) text(-5, 0.5, expression("N(0,1)"), adj = 0) text(-5, 0.7, expression(f(x)==frac(1,sigma*sqrt(2*pi))*e^{-frac((x-mu)^2,2*sigma^2)}), adj = 0) dev.off() postscript("NormalDensity.ps",width=6,height=6,horizontal=FALSE) curve(dnorm(x,mean=0.5,sd=0.5), from = -5, to = 5, col = "red", lwd = 2,main = "NormalDensity") curve(dnorm(x,mean=-0.5,sd=2), from = -5, to = 5, col = "slategray", lwd = 2,main = "",add=TRUE) curve(dnorm, from = -5, to = 5, col = "slategray", lwd = 3,main = "",add=T) text(-5, 0.4, expression("N(0.5,0.5)"), adj = 0) text(-5, 0.3, expression("N(-0.5,2)"), adj = 0) text(-5, 0.5, expression("N(0,1)"), adj = 0) text(-5, 0.7, expression(f(x)==frac(1,sigma*sqrt(2*pi))*e^{-frac((x-mu)^2,2*sigma^2)}), adj = 0) dev.off() postscript("Skosnosc.ps",width=6,height=6,horizontal=FALSE) mi<-0 ni<-3 par(mfrow=c(1,1)) curve(dnorm(x,mean=mi,sd=1), from = -5, to = 9, col = "slategray", lwd = 3,main = "",add=F,ann=T) curve(dchisq(x,df=ni), from = -5, to = 9, col = "red", lwd = 3,main = "",add=T) text(-5, 0.32, expression("N(0,1)"), adj = 0) text(-5, 0.2, expression(chi^{2}*(3)), adj = 0,col="red") abline(v=mi,lty="dashed",lwd = 2,col = "slategray") abline(v=ni,lty="dashed",col="red",lwd = 2) abline(h=0.1,lty="dashed",col="green",lwd = 4) dev.off() postscript("Leptokurtoza.ps",width=6,height=6,horizontal=FALSE) mi<-0 ni<-1 par(mfrow=c(1,1)) curve(dnorm(x,mean=mi,sd=1), from = -6, to = 6, col = "slategray", lwd = 3,main = "",add=F,ann=F) curve(dnorm(x,mean=mi,sd=2), from = -6, to = 6, col = "blue", lwd = 3,main = "",add=T,ann=F) curve(dt(x,df=ni), from = -6, to = 6, col = "red", lwd = 3,main = "",add=T) text(-5, 0.33, expression("N(0,1)"), adj = 0,col = "slategray") text(-5, 0.30, expression("N(0,2)"), adj = 0,col="blue") text(-5, 0.27, expression(t(5)), adj = 0,col="red") dev.off() ################################################# #W?asne Funkcje mnozenie<-function(a,b){ a*b } mnozenie(2,3) test<-function(a){3*a} test(2) curve(test) alfa<-function(a){2*a+5*cos(a)} alfa(3) curve(alfa,xlim=c(2,20),col="green") for (i in 1:14){ #Przyk?ad p?tli print(i) } for(i in 1:15) print(i:(2*i)) i<-0 for(j in c(7,13,18,120)) { print(1:(2*i)) i<-i+j } #Zad6 Tworzenie funkcji w praktyce - generowanie z wielowymioarowego r.normalnego #http://mst.mimuw.edu.pl/lecture.php?lecture=sst&part=Ch5 rnorm(10) set.seed(2023) plot(rnorm(100),col="purple") # II spos?b# I spos?b sigma1 <- 5 sigma2 <- 3 ro <- 0.6 X1 <- rnorm(1,0,1) X2 <- rnorm(1,0,1) X1 <- sigma1*X1 X2 <- ro*(sigma2/sigma1)*X1+sigma2*((1-ro^2)^(0.5))*X2 X1 X2 # A teraz jak wy?ej ale w postaci funkcji #generowanie rozk?adu normalnego rbivariate <- function(mean.x = 70, sd.x=3, mean.y=162, sd.y=14, r=.50, iter=100) { z1 <- rnorm(iter) z2 <- rnorm(iter) x <- sqrt(1-r^2)*sd.x*z1 + r*sd.x*z2 + mean.x y <- sd.y*z2 + mean.y return(list(x,y)) } data <- rbivariate(iter=1000,r=0) mean(data[[1]]) sd(data[[1]]) mean(data[[2]]) sd(data[[2]]) plot(data[[1]],data[[2]]) # III spos?b # Gotowe rozwi?zania #a) mvrnorm() #b)rmvnorm #Ada) install.packages("MASS") library("MASS") Sigma <- matrix(c(10,3,3,2),2,2) Sigma ?mvrnorm var(mvrnorm(n=1000, rep(0, 2), Sigma)) var(mvrnorm(n=1000, rep(0, 2), Sigma, empirical = TRUE)) Sigma<-diag(2) Sigma Sigma<-matrix(c(1,0,0,2),2,2) Sigma mvrnorm(n=1000,rep(0,2),Sigma) plot(mvrnorm(n=1000,rep(0,2),Sigma)) #Ad b) #install.packages("MASS") ?rmvnorm install.packages("mvtnorm") library(mvtnorm) mu=c(0,1) sigma=matrix(c(5,0,0,5),2,2) z=rmvnorm(300,mu,sigma) z plot(z) #Implementacja wzoru na opcj? w modelu BS BS<-function(S,X,r,t,sigma){ values<-c(2) dp<-(log(S/X)+(r+sigma^2/2)*t)/(sigma*sqrt(t)) dm<-(log(S/X)+(r-sigma^2/2)*t)/(sigma*sqrt(t)) values[1]<-S*pnorm(dp)-X*exp(-r*t)*pnorm(dm) values[2]<-X*exp(-r*t)*pnorm(-dm)-S*pnorm(-dp) values } (BS(100,110,0.03,1,0.4)) ################################################## #Praca na plikach #setwd("C:\\MK") #W?asne pliki - tworzenie, zapisywanie i odczytywanie m <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol=3, byrow=TRUE) write.table(m,file="PierwszyPlik.txt",sep="\t",col.names = FALSE,row.names = FALSE) m2<-read.table(file="PierwszyPlik.txt",sep="\t") dim(m2) m2 ?write.table #Wczytywanie WIG20 <- read.csv("WIG20.csv", sep=";", dec=",") View(WIG20) par(mfrow=c(1,1)) mojedane<-ts(WIG20[,9]) plot(mojedane,type="l",col="red") curve(dnorm(x,mean=mean(mojedane),sd=sd(mojedane)),xlim=c(-30,30),col="red",main=expression(Porownanie),ylab="") hist(mojedane,add=F,freq=F) curve(dnorm(x,mean=mean(mojedane),sd=sd(mojedane)),ylim=c(0,0.01),xlim=c(2200,2600),col="red",main=expression(Porownanie),ylab="") hist(mojedane,add=T,freq=F,breaks=10) dane<-read.csv2(file="WIG20.csv",dec=",") dane<-ts(dane[,9],start=2000,frequency=252) plot(dane,type="l",col="red")