Ilustrace zákona velkých čísel

Sice mluví o limitě, ale vidíme, že konvergence je tady zjevná už pro relativně malá \(n\). Černá čára znázorňuje posloupnost průměrů, tj. \(S_1, S_2, \dots\)

n = 10^4
X = runif(n)
S = cumsum(X)/(1:n)
plot(S, type='l')
curve(0.5+0*x,from=0,to=n,col='red',add=T)

Znázornění téhož pomocí histogramu – průměr je silně koncentrovaný okolo střední hodnoty.

SZVC = function (n, show) {
  N = 10^4
  m = matrix(runif(n*N), nrow=N)     # matice nezávislých náhodných veličin
  Y = (rowSums(m)-n/2)/(n) # každá položka Y vznikne sečtením a "přeškálováním" jednoho řádku m
  if (!show) { pdf(file=paste("SZVC_unif-", n, ".pdf", sep="")); }
  curve(dnorm, main=paste("X_i je U(0,1), n=", n), ylim=c(0,5), from=-2, to=2, col="red")        # pro srování hustota normálního rozdělení 
  hist(Y,breaks=seq(-8,8,by=0.1), freq = FALSE, add=TRUE) # a do něj nakreslený histogram Y
  legend("topright",lty=1,lwd=3,col=c('black', 'red'),
       legend=c("Y_n", "N(0,1)"),bty="n")    
  if (!show) { dev.off(); }
}

SZVC(10,T)

SZVC(200,T)

Ilustrace centrální limitní věty

Při přeškálování “odmocninou” dochází stále k výrazné oscilací – distribuce \(Y_n\) (na obrázku hodnota v bodě \(x=n\)) se blíží normálnímu rozdělení, tj. bude v průměru vzdálena od 0 o 1, i pro obrovská \(n\). Oproti tomu distribuce \(S_n\) ze zákona velkých čísel se blíží jednobodovému rozdělení na hodnotě \(\mu\).

n = 10^5
X = runif(n)
Y = (cumsum(X)-(1:n)/2)/(sqrt(1/12)*sqrt(1:n))
plot(Y, type='l')
curve(0+0*x,from=0,to=n,col='red',add=T)

Vsuvka z R-kového programování

Dva způsoby jak udělat kumulovanou sumu

X = rep(1,10); X
 [1] 1 1 1 1 1 1 1 1 1 1
Y = cumsum(X); Y
 [1]  1  2  3  4  5  6  7  8  9 10
Reduce("+", X, accumulate=T)
 [1]  1  2  3  4  5  6  7  8  9 10

Histogramy \(Y_n\) pro \(X_i \sim U(0,1)\)

CLV1 = function (n, show=FALSE) {
  N = 10^6
  m = matrix(runif(n*N, 0,1), nrow=N)     # matice nezávislých náhodných veličin U(0,1)
  Y = (rowSums(m)-n/2)/(sqrt(1/12)*sqrt(n)) # každá položka Y vznikne sečtením a "přeškálováním" jednoho řádku m
  if (!show)  { 
#    pdf(file=paste("CLV_unif-", toString(n), ".pdf", sep=""))
    pdf(file=paste("CLV_en_unif-", toString(n), ".pdf", sep=""))    
  }
#  curve(dnorm, main=paste("X_i je U(0,1), n=",n), ylim=c(0,1), from=-3, to=3, col='red')        # pro srování hustota normálního rozdělení 
  hist(Y, breaks=seq(-5,5,by=0.1), freq = FALSE, ylim=c(0,.5), add=FALSE) # a do něj nakreslený histogram Y
  curve(dnorm, main=paste("X_i is U(0,1), n=",n), ylim=c(0,.5), from=-3, to=3, col='red', add=T)        # pro srování hustota normálního rozdělení   
  
  legend("topright",lty=1,lwd=3,col=c('black', 'red'),
       legend=c("Y_n", "N(0,1)"),bty="n")  
  if (!show) { dev.off()}
}
for (n in 1:10) { CLV1(n,T); }