# Demonstrace centrální limitní věty (CLV). # CLV budeme demonstrovat na 'n' průměrech 'm' relizací náhodné veličiny # generované funkcí 'g'. # Funkce generující 'n' realizací náhodné veličiny. # Argumenty: # n: velikost výběru # Vrací: vektor 'n' realizací náhodné veličiny. g<-function(n) { # rovnoměrné rozdělení x<-runif(n,0,1) # další způsoby generování relizací náhodných veličin jsou # zakomentované (lze je jednoduše aktivovat smazáním znaku '#' před nimi) # normální rozdělení #x<-rnorm(n,.5,.2) # trojúhelníkové rozdělení #x<-runif(n,0,.5)+runif(n,0,.5) # bimodální rozdělení #x<-rnorm(n,.75-.5*(runif(n,0,1)<.5),.1) # házení mincí (alternativní rozdělení) #x<-rbinom(n,1,.5) return(x) } # Funkce generující 'm' náhodných vektorů délky 'n' a vykreslující histogram # jejich průměrů spolu s proloženým odhadem hustoty pravděpodobnosti # normálního rozdělení s parametry odhadnutými z dat. # Parametry: # m - počet vektorů # n - délka jednoho vektoru clv<-function(m,n,titulek) { # alokujeme matici typu 'm x n', v 'm' řádcích vektory 'n' realizací náh. veličiny x<-matrix(NA,m,n) for (i in 1:m) { x[i,]<-g(n) } x<-colMeans(x) # histogram hist(x, probability=TRUE, breaks=50, col='gray', ylab='hustota',main=titulek)#,xlim=c(-.1,1.1)) # proložíme hustotu pravděpodobnosti normálního rozdělení ax<-seq(from=min(x), to=max(x), length=100) # body na ose x ay<-dnorm(ax, mean(x), sd(x)) lines(ax, ay, col='red') } # počet vektorů m<-100 # délka jednoho vektoru n<-10000 options(scipen=5) # čísla chceme vypisovat ve fixní notaci # vykreslíme 3x2 obrázků opar<-par(mfrow=c(3,2)) clv(1,n,paste(n,'realizací n.v.')) clv(2,n,paste(n,'průměrů realizací 2 n.v.')) clv(3,n,paste(n,'průměrů realizací 3 n.v.')) clv(5,n,paste(n,'průměrů realizací 5 n.v.')) clv(20,n,paste(n,'průměrů realizací 20 n.v.')) clv(m,n,paste(n,'průměrů realizací',m,'n.v.')) par(opar)