# # Bevezetés az R-be # változók generálása, adatok grafikus ábrázolása # console módban enter, script módban control+enter megnyomásával lehet # lefutattatni egy parancsot # Az R tud számolni: 2 + 2 2.12*3.4 2^3 2^(1/2) 2+2 == 4 2+2!=5 0 > 1 # Lehet változókat definiálni. értékadás <- a <- 2 a a + 2 # Vannak beápített függvények: sqrt(4) sqrt(-4) sqrt(-4+0i) round(3.1415) round(3.1415, 2) round(pi) # Az R segít: ?round # round argumentumai x, digits round(x = pi, digits = 4) # ezeket = jellel adjuk meg. Ekkor nem definiáltunk új x, digits változókat! x # Vektorok: b <- c(3,5,1,9,6) # combine függvény length(b) sum(b) b[2] b+3 b*3 c <- c(2,1,0,0,2) b*c b+c b^c sin(b) d <- c(2,0) b*d e <- c(0,2,0,1,2,1) e*d ## ######## # Változók generálása #Dobjunk fel egy szabályos érmét 10-szer: X1 <- rbinom(n=10, size=1, prob=0.5) # n db változót generál, binom(size, prob) eloszlásból # Szemléltessük a nagy számok törvényét: rbinom(n=1, size=100, prob=0.7)/100 nszt <- rep(0, times=100) for (i in 1:100) { nszt[i] <- rbinom(n=1, size=100*i, prob=0.7)/(100*i) } nszt # Centrális határeloszlás-tétel: X2 <- rbinom(n=20, size=100, prob=0.5) hist(X2) hist(X2, prob=TRUE) # igy pedig 1-re normal hist(X2, breaks=20, prob=TRUE) # lehet a beosztást változtatni lines(density(X2)) # kapunk egy sűrűségfüggvényt lines(density(X2, bw=0.1)) # bw a bandwidth =sávszélesség. Ha ez túl kicsi, akkor nagyon oszcillál # az illesztett sűrűségfüggvény # Empirikus és a valódi eloszlásfüggvény közötti különbség: m <- 100 p <- rep(0, times = 11) X2 <- rbinom(n=m, size=10, prob=0.5) for (i in (1:11)) {p[i] <- length(X2[X2==i-1])/m} plot((0:10), p, ylim = c(0, 0.26)) points((0:10), dbinom((0:10), size=10, prob=0.5), col='red') par(mfrow=c(2,2)) for (i in (1:4)) { m <- 100*i^2 p <- rep(0, times = 11) X2 <- rbinom(n=m, size=10, prob=0.5) for (i in (1:11)) {p[i] <- length(X2[X2==i-1])/m} plot((0:10), p) points((0:10), dbinom((0:10), size=10, prob=0.5), col='red') } par(mfrow=c(1,1)) X3 <- rbinom(n=20000, size=100, prob=0.5) hist(X3, prob=TRUE, breaks = 20) hist(X3, prob=TRUE, breaks = seq(25, 75, 1)) Y <- rnorm(100, mean = 2, sd = 2) # r??? veletlen szamokat general a megfelelo eloszlas szerint # a normalis eloszlas parameterei a 'mean' varhato ertek, 'sd' a szoras hist(Y, prob=TRUE, breaks = 10) n <- 1000 plot(dbinom(x=(0:n), size=n, prob=0.7)) plot(dbinom(x=(0:n)[600:800], size=n, prob=0.7)) plot(dbinom(x=(0:n), size=n, prob=0.7)) points(dnorm((0:n) ,mean=700, sd= sqrt(n*0.7*0.3))) plot(dnorm((0:n)[650:750] ,mean=700, sd= sqrt(n*0.7*0.3))) points(dnorm((0:n)[650:750] ,mean=700, sd= sqrt(n*0.7*0.3)), col='red') ### Egyéb fontos eloszlások: # unif, exp, pois, norm, binom # r - random: véletlen változót generál # d - density: sűrűségfüggvényt / valószínűségeloszlást adja meg # p - probability distribution function: eloszlásfüggvény # q - quantile: kvantilisfüggvény runif(n=1, min=0, max=1) # egyenletes eloszlás dexp(0, rate=2) ##################### ### Poisson konvergenciatetel szemleltetese # Noveljuk n-et ugy, hogy n p_n = 1. # Nezzuk hogy lesz a binomialis minta # egyre kozelebb a Poisson eloszlashoz. par(mfrow=c(2,2)) n <- 5 pn <- 1/n bin1 <- rbinom(10000, size=n, prob=pn) hist(bin1, breaks=seq(-0.5, max(bin1)+0.5, by=1), probability=TRUE, main='Poisson konvergenciatétel', xlab ='Binom(5, 1/5) gyakoriságok és a Poisson eloszlás', ylab='' ) points(0:max(bin1),dpois(0:max(bin1), 1)) n <- 10 pn <- 1/n bin2 <- rbinom(10000, size=n, prob=pn) hist(bin2, breaks=seq(-0.5, max(bin2)+0.5, by=1), probability=TRUE, main='Poisson konvergenciatétel', xlab ='Binom(10, 1/10) gyakoriságok és a Poisson eloszlás', ylab='') points(0:max(bin2),dpois(0:max(bin2), 1)) n <- 100 pn <- 1/n bin3 <- rbinom(10000, size=n, prob=pn) hist(bin3, breaks=seq(-0.5, max(bin3)+0.5, by=1), probability=TRUE, main='Poisson konvergenciatétel', xlab ='Binom(100, 1/100) gyakoriságok és a Poisson eloszlás' , ylab='') points(0:max(bin3),dpois(0:max(bin3), 1)) n <- 1000 pn <- 1/n bin4 <- rbinom(10000, size=n, prob=pn) hist(bin4, breaks=seq(-0.5, max(bin4)+0.5, by=1), probability=TRUE, main='Poisson konvergenciatétel', xlab ='Binom(1000, 1/1000) gyakoriságok és a Poisson eloszlás', ylab='') points(0:max(bin4),dpois(0:max(bin4), 1)) # Nezzuk, hogy a parameter novelesevel hogy kapunk egyre inkabb normalis # hisztogrammot. # Legyen p <- 0.1 # rogzitett, es n-et noveljuk. par(mfrow=c(2,2)) n <- 10 nbin1 <- rbinom(10000, size=n, prob=p) hist(nbin1, breaks=seq(-0.5, max(nbin1)+0.5, by=1), probability=TRUE) points(0:max(nbin1),dpois(0:max(nbin1), 1)) n <- 50 nbin2 <- rbinom(10000, size=n, prob=p) hist(nbin2, breaks=seq(-0.5, max(nbin2)+0.5, by=1), probability=TRUE) points(0:max(nbin2),dpois(0:max(nbin2), n*p)) n <- 100 nbin3 <- rbinom(10000, size=n, prob=p) hist(nbin3, breaks=seq(-0.5, max(nbin3)+0.5, by=1), probability=TRUE) points(0:max(nbin3),dpois(0:max(nbin3), n*p)) n <- 1000 nbin4 <- rbinom(10000, size=n, prob=p) hist(nbin4, breaks=seq(-0.5, max(nbin4)+0.5, by=1), probability=TRUE) points(0:max(nbin4),dpois(0:max(nbin4), n*p)) par(mfrow=c(1,1)) # Szepen latszik, hogy lesz a Poissonbol normalis eloszlas.