2. Laboros gyakorlat (3-4. hét)

Nevezetes abszolút folytonos eloszlások

** Példa: egyenletes eloszlás **

Véletlenszerűen kiválasztunk egy pontot az \([a,b]\) intervallumból. Annak a valószínűsége, hogy a kiválasztott pont az \(E\subset [a,b]\) halmazba esik: \(P(E) = E\) hossza / \([a, b]\) hossza (feltéve, hogy az \(E\) halmaznak van hossza)

A valószínűségeloszlás jellemezhető az \(f: \mathbb R \to \mathbb R\): \(f(x) = 1/(b-a)\), ha \(x\in [a,b]\) és 0 különben függvénnyel úgy, hogy \(P(E) =\int_E f(x)dx\).

Vagyis ha egy véges intervallumra úgy dobunk egy pontot, hogy az intervallum bármely részintervallumára annak hosszával arányos valószínűséggel essen, akkor a pont értéke (\(x\)-koordinátája) egyenletes eloszlású valószínűségi változó, sűrűségfüggvénye a fenti f, eloszlásfüggvénye: \(F(x) = (x-a)/(b-a)\), ha \(x \in [a,b]\) (és 0, ha \(x\le a\) és 1, ha \(x\ge b\))

Abszolút folytonos valószínűségi változó:

Ha létezik az \(X\) valószínűségi változóhoz olyan \(f_X(x)\) függvény, amelyre \(F_X(x) = \int_{-\infty} ^x f_X(t) dt\), akkor \(f_X(x)\)-et az \(X\) sűrűségfüggvényének hívjuk.

#############################################################################
### Abszolút folytonos valószínűségi változók esetén az eloszlásfüggvény R-ben: ###

# p betű + valószínűségi változó neve, pl. pnorm, punif, pt, ...

############################################################################# 

##########################
## Egyenletes eloszlás: ##
## Egyenletes[a,b]      ##
##########################

# Egyenletes[1,6] eloszlásfüggvénye
xegyen <- seq(0, 7, by = 1)
yegyen <- punif(xegyen, min = 1, max = 6)
plot(yegyen, type = "l", lwd=2, col="red", xaxt = "n",
     xlab="x", ylab="F(x)",
     main="Egyenletes[1,6] eloszlásfüggvénye")
axis(1, at=1:8, labels=c(0:7))
abline(h = 0, col = "grey", lty = 2); abline(h = 1, col = "grey", lty = 2)

# Egyenletes[1,6] sűrűségfüggvénye
x <- seq(0,7,length=200)
y <- dunif(x,min=1,max=6)
plot(x,y,
     lwd=2, col="blue",
     ylim=c(0, 0.4),
     ylab="f(x)",
     main="Egyenletes[1,6] sűrűségfüggvénye")

# Egyenletes[1,6] sűrűségfüggvénye (szebb grafika)
x <- seq(1,6,length=200)
y <- dunif(x,min=1,max=6)
plot(x,y, type="l", lwd=2, col="blue",
     xlim=c(0, 7), ylim=c(0, 0.4),
     ylab="f(x)",
     main="Egyenletes[1,6] sűrűségfüggvénye")
xe <- c(seq(0,1,length=100))
ye <- seq(0,0,length=100)
lines(xe,ye,type="l",lwd=2,col="blue")
xe <- c(seq(6,7,length=100))
ye <- seq(0,0,length=100)
lines(xe,ye,type="l",lwd=2,col="blue")

# fv. alatti terület = 1
polygon(c(1,x,6),c(0,y,0),col="lightgray",border=NA)
lines(x,y,type="l",lwd=2,col="blue")

# P(1 < X < 3) = ?
polygon(c(1,x,6),c(0,y,0),col="white",border=NA)
lines(x,y,type="l",lwd=2,col="blue")
xvsz <- seq(1,3,length=100)
yvsz <- dunif(xvsz, min=1, max=6)
polygon(c(1,xvsz,3),c(0,yvsz,0),col="lightgray",border=NA)
lines(xvsz,yvsz,type="l",lwd=2,col="blue")

punif(3,  min=1,max=6)
## [1] 0.4
# P(3 < X < 4.5) = ?
polygon(c(1,xvsz,3),c(0,yvsz,0),col="white",border=NA)
lines(x,y,type="l",lwd=2,col="blue")
xvsz <- seq(3,4.5,length=100)
yvsz <- dunif(xvsz,min=1, max=6)
polygon(c(3,xvsz,4.5),c(0,yvsz,0),col="lightgray",border=NA)
lines(x,y,type="l",lwd=2,col="blue")

punif(4.5,  min=1,max=6) - punif(3, min=1, max=6)
## [1] 0.3
#############################
## Exponenciális eloszlás: ##
## Exp(lambda)             ##
#############################
# lambda>0 paraméterű exponenciális eloszlás
# sűrűségfüggvénye: f(x) = lambda*e^{-lambda*x} ha x > 0 és
#                           0       különben
# pl. radioaktív részecske bomlási ideje, élettartam, várakozási idő



##########################
## Normális eloszlás:   ##
## N(mu, szigma)        ##
##########################
# m várható értékű, szigma szórású normális eloszlás
# sűrűségfüggvénye: f(x) = 1/(sqrt(2Pi)*szigma) e^(-(x-mu)^2/2*szigma^2)
# Pl. testmértékek, terméshozam, IQ score
# https://en.wikipedia.org/wiki/Intelligence_quotient
# 0 várható értékű, szigma=1 szórású normális eloszlás = standard normális eloszlás,
# eloszlásfüggvénye Fi(x) = integrál_(-Inf to x) f(x)  nem elemi fv.

# 3.  # set.seed(2)
xseq <- seq(-4,4, 0.01)

# a) Ábrázolja a standard normáls eloszlásfüggvényétgvényét!
# X ~ N(0, 1) eloszlásfüggvénye: Fi(x) = P(X < x) = pnorm(x)

plot(xseq, pnorm(xseq, 0, 1), col="red", type="l",lwd=2,
     xlab="x", ylab="Fi(x)", 
     main="Standard normális eloszlásfüggvénye\n (értéke pl. 1-ben: Fi(1) = P(X < 1) =\n pnorm(1) = 0.8413447)")
abline(h = c(0,1), lty = 2)

abline(v = 1, lty = 3)
abline(h = pnorm(1), lty = 3)

# b) Ábrázolja a standard normáls sűrűségfüggvényét!

suruseg <- dnorm(xseq, 0,1)
plot(xseq, suruseg, type="l",lwd=2, col="blue", # cex.axis=0.8,
     xlab="x", ylab="f(x)",  
     main="Standard normális sűrűségfüggvénye")

# c) Normális(mu, szigma) eloszlás sűrűségfüggvénye

x <- seq(-6,6,1/1000)
dnorm <- dnorm(x)

plot(x, dnorm, type="l", col="green", lwd=2, ylab='', xlab='', 
     main = "Normális eloszlás sűrűségfüggvénye")
legend(x='topleft', bty='n', 
       legend = c("N(0,1)", "N(2,1)", "N(0,2)", "N(0,3)"),
       col = c("green","yellow", "blue","red"), lwd = 2 )

lines(x, dnorm, type="l", col="black", lty=2)

dn2 <- dnorm(x, mean = 2, sd = 1)
lines(x, dn2, type="l", col="yellow", lwd=2)

dn3 <- dnorm(x, mean = 0, sd = 2)
lines(x, dn3, type="l", col="blue", lwd=2)

dn4 <- dnorm(x, mean = 0, sd = 3)
lines(x, dn4,type="l", col="red", lwd=2)

# d) Szinumláljon adatokat standard normális eloszlásból, majd ábrázolja hisztogrammal.
# Rajzolja fel a standard normális sűrűségfüggvényt is az ábrára!

szim <- rnorm(10000, 0, 1)
hist(szim, freq=FALSE,
     xlab=" ", 
     ylab="sűrűség", 
     main="Standard normális szimuláció")
curve(dnorm(x, 0, 1), add=TRUE, col="blue", lwd=2)

# curve(dnorm(x, mean(szim), sd(szim)), add=TRUE, col="darkblue", lwd=2)


##

## Egyenletes eloszlás / Egyenletes[a, b] /

x <- seq(1,6,length=200)
y <- dunif(x,min=1,max=6)
plot(x,y, type="l", lwd=2, col="blue",
     xlim=c(0, 7), ylim=c(0, 0.4),
     ylab="f(x)",
     main="Egyenletes[1,6] sűrűségfüggvénye")
xe <- c(seq(0,1,length=100))
ye <- seq(0,0,length=100)
lines(xe,ye,type="l",lwd=2,col="blue")
xe <- c(seq(6,7,length=100))
ye <- seq(0,0,length=100)
lines(xe,ye,type="l",lwd=2,col="blue")

polygon(c(1,x,6),c(0,y,0),col="white",border=NA)
lines(x,y,type="l",lwd=2,col="blue")
xvsz <- seq(1,3,length=100)
yvsz <- dunif(xvsz, min=1, max=6)
polygon(c(1,xvsz,3),c(0,yvsz,0),col="lightgray",border=NA)
lines(xvsz,yvsz,type="l",lwd=2,col="blue")

## Stadard normális eloszlás / N(0, 1) /

xseq <- seq(-4,4, 0.01)
plot(xseq, dnorm(xseq, 0,1), 
     type = "l",
     lwd = 2, 
     col = "blue", 
     #cex.axis = 0.8,
     xlab = "x", 
     ylab = "f(x)",  
     main = "Standard normális sűrűségfüggvénye")
text(-2.5, 0.3, expression(f(x) == 
                             paste(frac(1, sqrt(2*pi)*sigma)," ",e^{frac(-(x - mu)^2, 2 * sigma^2)})), 
     cex = 1.2)

# curve(dnorm, from=-4, to=4, n=41000, main="Standard normális sűrűségfüggvénye")


## Normális eloszlás / N(m, szigma) /

x <- seq(-6,6,1/1000)

plot(x, dnorm(x), type="l", col="yellow", lwd=2, ylab='', xlab='', 
     main = "Normális eloszlás sűrűségfüggvénye")
lines(x, dnorm(x), type="l", col="black", lty=2)    # N(m = 0, szigma = 1)

dn2 <- dnorm(x, mean = 2, sd = 1)
lines(x, dn2, type="l", col="purple", lwd=2)     # N(m = 2, szigma = 1)

dn3 <- dnorm(x, mean = 0, sd = 2)
lines(x, dn3, type="l", col="blue", lwd=2)       # N(m = 0, szigma = 2)

dn4 <- dnorm(x, mean = 0, sd = 3)
lines(x, dn4,type="l", col="red", lwd=2)         # N(m = 0, szigma = 3)

legend(x='topleft',bty='n',
       legend = c(paste( 
         c("N(0, 1)","N(2, 1)", "N(0, 2^2)","N(0, 3^2)"), sep='=')), 
       col = c("yellow", "purple", "blue", "red"), lwd = 2 )

## Normális valószínűségi változó standardizálása
# X ~ N(m, szigma)  =>  (X - m)/szigma ~ N(0, 1)
x <- rnorm(1000, mean = 5, sd = 3)
hist(x, freq=FALSE)
curve(dnorm(x, 5, 3), add=TRUE, col="blue", lwd=2)

nx <- ( x - 5 ) / 3
hist(nx, freq=FALSE)
curve(dnorm(x, 0, 1), add=TRUE, col="blue", lwd=2)

# Példa:
# X ~ N(3,2^2)
# P(X < 4) = P(X-3 < 4-3) = P((x-3)/2 < (4-3)/2)
pnorm(4, mean = 3, sd = 2) == pnorm(1/2)
## [1] TRUE
# 1. Feladat:  Legyen X ~ N(7, 3^2) valószínűségi változó.  Számolja ki 
# P(X > 8) - at standardizálással is!

1 - pnorm(8, mean = 7, sd = 3)
## [1] 0.3694413
# vagy   
pnorm(8, mean = 7, sd = 3, lower.tail = FALSE)
## [1] 0.3694413
1 - pnorm((8-7)/3)
## [1] 0.3694413
# vagy   
pnorm((8-7)/3, lower.tail = FALSE)
## [1] 0.3694413
## Függvény alatti terület: 
x <- seq(-4, 4,length=200)
y <- dnorm(x, mean=0, sd=1)
plot(x,y,type="l",lwd=3,col="black", 
     main = "Standard normális")
x <- seq(-4, -1, length=100)
y <- dnorm(x, mean=0, sd=1)
polygon(c(-4, x, -1),c(0,y,0),col="red")

## t eloszlás / t_n / 

x <- seq(-6,6,1/1000)

dt4 <- dt(x, 30)
plot(x, dt4, type="l", col="yellow", lwd=2, ylab='', xlab='', 
     main = "t eloszlás sűrűségfüggvénye")

dt1 <- dt(x, 0.5)
lines(x, dt1, type="l", col="cyan", lwd=2)

dt2 <- dt(x, 1.5)
lines(x, dt2, type="l", col="purple", lwd=2)

dt3 <- dt(x, 5)
lines(x, dt3, type="l", col="red", lwd=2)

dnorm <- dnorm(x)
lines(x, dnorm ,type="l", col="black", lty=2)

legend(x='topleft',bty='n',
       legend = c(paste('sz.f.',
                        c(0.5, 1.5, 5, 30), sep='=')), 
       col = c("cyan", "purple", "red", "yellow"), lwd = 2 )

legend(x='topright',bty='n',
       legend = c(paste('N(0,1)', sep='=')), 
       col = c("black"), lwd = 2, lty = 3)

## Exponenciális / Exp(lambda) / eloszlás

x <- seq(0, 1, 1/1000)

dt1 <-  dexp(x, rate = 2.5)
plot(x, dt1, type="l", col="red", lwd=2, ylab='', xlab='', 
     main = "Exponenciális eloszlás sűrűségfüggvénye")

dt2 <-  dexp(x, rate = 2)
lines(x, dt2, type="l", col="purple", lwd=2)

dt3 <-  dexp(x, rate = 1)
lines(x, dt3, type="l", col="blue", lwd=2)

de4 <- dexp(x, rate = 1/2)
lines(x, de4, type="l", col="orange", lwd=2)

legend(x='topright',bty='n',
       legend = c(paste('lambda', c(2.5, 2, 1, 1/2),sep='=')), 
       col = c("red", "purple", "blue", "orange"), lwd = 2 )

## Khí-négyzet / Chi-square(df) / eloszlás 

x <- seq(0, 15, 1/1000)

dchisq1 <-  dchisq(x, df = 2)
plot(x, dchisq1, type="l", col="red", lwd=2, ylab='', xlab='', 
     main = "Khí-négyzet eloszlás sűrűségfüggvénye")

dchisq2 <-  dchisq(x, df = 3)
lines(x, dchisq2, type="l", col="purple", lwd=2)

dchisq3 <-  dchisq(x, df = 4)
lines(x, dchisq3, type="l", col="blue", lwd=2)

dchisq4 <-  dchisq(x, df = 5)
lines(x, dchisq4, type="l", col="orange", lwd=2)

legend(x='topright',bty='n',
       legend = c(paste('df', c(2, 3, 4, 5),sep='=')), 
       col = c("red", "purple", "blue", "orange"), lwd = 2 )

## F / F(df1,df2) / eloszlás 

x <- seq(0, 5, 1/1000)

df1 <-  df(x, df1 = 2, df2=1)
plot(x, df1, type="l", col="red", lwd=2, ylab='', xlab='', 
     main = "F eloszlás sűrűségfüggvénye")

df2 <-  df(x, df1 = 5, df2=2)
lines(x, df2, type="l", col="purple", lwd=2)

df3 <-  df(x, df1 = 5, df2=5)
lines(x, df3, type="l", col="blue", lwd=2)

df4 <-  df(x, df1 = 20, df2=20)
lines(x, df4, type="l", col="orange", lwd=2)

legend(x='topright',bty='n',
       legend = c(paste('df1, df2', c("2, 1", "5, 2", "5, 5", "20, 20"),sep=' = ')), 
       col = c("red", "purple", "blue", "orange"), lwd = 2 )

## Nevezetes abszolút folytonos eloszlásfüggvények

par(mfrow=c(2,2))
x_sample <- seq(-3.2, 3.2, 0.001)

plot(x_sample, pnorm(x_sample), 
     type="l", col="red", lwd=2, main="Eloszlásfüggvény: N(0,1)", ylab='', xlab='')
plot(x_sample, pt(x_sample, 5),
     type="l", col="red", lwd=2, main="t_5", ylab='', xlab='')
plot(x_sample, pexp(x_sample, 5),
     type="l", col="red", lwd=2, main="Exp(5)", ylab='', xlab='')
plot(x_sample, punif(x_sample, -2,2),
     type="l", col="red", lwd=2, main="Egyenletes[-2,2]", ylab='', xlab='')

par(mfrow=c(1,1))


## Nevezetes abszolút folytonos sűrűségfüggvények

par(mfrow=c(2,2))
x_sample <- seq(-3.2, 3.2, 0.001)

plot(x_sample, dnorm(x_sample), 
     type="l", col="blue", lwd=2, main="Sűrűségfüggvény: N(0,1)", ylab='', xlab='')

plot(x_sample, dt(x_sample, 5),
     type="l", col="blue", lwd=2, main="t_5", ylab='', xlab='')

x_sample <- c(seq(0.01,1.5, 0.001))
plot(x_sample, dexp(x_sample, 5), xlim=c(-0.5, 1.5),
     type="l", col="blue", lwd=2, main="Exp(5)", ylab='', xlab='')
xe <- c(seq(-3,0,length=100))
ye <- seq(0,0,length=100)
lines(xe,ye,type="l",lwd=2,col="blue")

x <- seq(1,6,length=200)
y <- dunif(x,min=1,max=6)
plot(x,y, type="l", lwd=2, col="blue", main="Egyenletes[1,6]",
     xlim=c(0, 7), ylim=c(0, 0.4), ylab='', xlab='')
xe <- c(seq(0,1,length=100))
ye <- seq(0,0,length=100)
lines(xe,ye,type="l",lwd=2,col="blue")
xe <- c(seq(6,7,length=100))
ye <- seq(0,0,length=100)
lines(xe,ye,type="l",lwd=2,col="blue")

par(mfrow=c(1,1))


# 2. Feladat: Mit rajzol ki az alábbi program? MUtassa meg, hogy az alábbi függvény sűrűségfüggvény!
# Mit jelöl a besatírozott terület? Számolja ki és ábrázolja az eloszlásfüggvényt!

x <- seq(0, 2, 1/100);  y <- 1/4*(2-x)^3 

xa <- seq(-1, 0, 1/100);  ya <- rep(0,length(xa))
xb <- seq( 2, 3, 1/100);  yb <- rep(0,length(xb))

plot(x, y, type="l", col="black", lwd=3, ylab='', xlab='', xlim=c(-0.5,2.5), xaxt = "n", main = " ")
axis(1, cex.axis = 1.5)
lines(xb, yb, type="l", col="black", lwd=3)
lines(xa, ya, type="l", col="black", lwd=3)
abline(h = 0, lty = 2)
x1 <- seq(0, 0.5, 1/100)
y1 <- 1/4*(2-x1)^3
polygon(c(0,x1,0.5),c(0,y1,0),col="yellow")

########## MEGOLDÁS ##########

# sűrűségfv: nemnegatív és integrál_{0-tól 3-ig} 1/4*(2-x)^3 = 1
# besatírozott terület: P(0 < X < 0.5)
# eloszlásfv: 0, ha x<=0; 
#             integrál_{0-tól x-ig}  1/4*(2-x)^3 = 1-(2-x)^4/16, ha 0<x<=2
#             1, ha x>2

x <- seq(0, 2, 1/100);  y <- 1-(2-x)^4/16 

xa <- seq(-1, 0, 1/100);  ya <- rep(0,length(xa))
xb <- seq( 2, 3, 1/100);  yb <- rep(1,length(xb))

plot(x, y, type="l", col="black", lwd=3, ylab='', xlab='', xlim=c(-0.5,2.5), xaxt = "n", main = " ")
axis(1, cex.axis = 1.5)
lines(xb, yb, type="l", col="black", lwd=3)
lines(xa, ya, type="l", col="black", lwd=3)
abline(h = 0, lty = 2)

##############################



########################
# Nagy számok törvénye #
########################


##############
# Kockadobás #
##############
kocka <- 1:6
n <- 1000   # mintanagyság: dobások száma

dobasok <- sample(kocka, size = n, replace = TRUE)
atlagok <- cumsum(dobasok) / 1:n
plot(atlagok, 
     xlab = "kockadobások száma", 
     ylab = "átlag",
     ylim = c(1,6),
     type = "l",
     main = paste("Szimulált kockadobások átlaga (", n, "dobásig )"))
abline(h = 3.5, col = "blue")

##################################
# Binomiális eloszás: Bin(n1, p) #
##################################
n1 <- 8
p <- 0.3
n <- 1000

x <- rbinom(n, n1, p)
atlagok <- cumsum(x) / 1:n
plot(atlagok,
     xlab = "kísérletek száma", 
     ylab = "átlagok",
     #ylim = c(0, 1),
     type = "l",
     main = paste("Szimulált binomiális ( Bin(",n1,",",p,") ) átlaga"))
abline(h = n1*p, col = "blue")

###################################
# Normális eloszás: N(mu, szigma) #
###################################
mu <- 46
szigma <- 2
n <- 1000

x <- rnorm(n, mu, szigma)
atlagok <- cumsum(x) / 1:n
plot(atlagok,
     xlab = "kísérletek száma", 
     ylab = "átlagok",
     #ylim = c(mu-2*szigma, mu+2*szigma),
     type = "l",
     main = paste("Szimulált normális ( N(",mu,",",szigma,"^2) ) átlaga"))
abline(h = mu, col = "blue")

# plot(x, pch = ".")
# points(1:n, atlagok, type = "l", col = "red")



#################################
# Centrális határeloszlás tétel #
#################################

##############
# Kockadobás #
##############

# CHT alapján n kockadobás átlagának eloszlása:
n <- 100
x1 <- seq(1,6,0.001)
plot(x1,dnorm(x1,mean=3.5,sd=1.707825/sqrt(n)),
     type='l', col="red", lwd=2, ylab="", xlab="",
     main='n kockadobás átlagának eloszlása a CHT alapján')
lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(5)), type="l", col="green", lwd=2)
lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(10)), type="l", col="yellow", lwd=2)
lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(30)), type="l", col="orange", lwd=2)
legend(x='topleft',bty='n',
       legend = c(paste(c("n = 5","n = 10", "n = 30","n = 100"), sep='=')), 
       col = c("green", "yellow", "orange", "red"), lwd = 2 )

# szimuáció:
x <- 1:6
ndobas <- 30   # dobások száma
rep <- 1000    # ismétlések száma

A <- matrix(sample(x, ndobas*rep, replace=T), ncol=ndobas, byrow=TRUE)
xbar<-apply(A,1,mean)   # ndobas átlaga   

head(cbind(A,xbar))
##                                                                      xbar
## [1,] 2 6 6 4 1 3 2 2 4 5 4 2 3 3 4 5 4 5 3 5 6 4 5 1 5 3 4 5 1 6 3.766667
## [2,] 6 3 4 4 6 3 4 3 6 1 5 1 6 2 2 4 1 4 2 4 6 2 6 1 4 5 6 2 1 5 3.633333
## [3,] 3 2 5 1 2 4 4 1 3 2 4 4 1 4 5 6 6 1 4 3 5 2 5 3 6 3 4 1 6 2 3.400000
## [4,] 5 3 4 1 1 2 3 6 3 5 5 3 3 2 1 3 3 1 2 2 2 4 2 5 3 4 2 4 4 5 3.100000
## [5,] 1 2 3 3 1 3 5 1 2 3 2 3 6 5 2 5 4 1 1 2 6 6 2 6 5 1 2 5 6 3 3.233333
## [6,] 2 1 3 4 2 1 4 5 4 1 4 3 4 2 3 4 3 4 6 2 2 5 3 5 6 4 4 6 6 5 3.600000
tail(cbind(A,xbar))
##                                                                         xbar
##  [995,] 4 2 2 4 2 2 3 4 1 1 4 6 6 5 6 2 4 2 4 3 6 5 2 2 4 2 5 2 2 1 3.266667
##  [996,] 2 1 2 4 3 4 2 3 3 4 2 1 5 5 2 3 1 2 6 2 2 2 6 6 6 1 2 5 6 3 3.200000
##  [997,] 5 5 4 5 6 2 5 5 2 2 5 5 4 1 5 3 5 2 1 4 4 5 3 1 1 2 6 3 1 6 3.600000
##  [998,] 3 5 3 6 3 6 3 5 2 2 2 6 2 5 5 6 6 4 6 6 2 6 3 5 1 5 5 2 6 3 4.133333
##  [999,] 5 2 5 3 1 6 4 5 1 2 2 1 2 3 4 2 3 2 6 5 2 1 5 3 1 4 6 5 2 2 3.166667
## [1000,] 5 3 5 4 2 5 1 6 4 5 3 2 1 3 5 4 4 3 6 5 2 2 6 6 1 3 1 3 2 5 3.566667
hist(xbar, col="blue", freq=F, xlab="", ylab="sűrűség", 
     ylim=range(0,max(hist(xbar)$density, dnorm(x1,mean=3.5,sd=1.707825/sqrt(ndobas)))),
     main = paste(ndobas, "kockadobás átlaga (", rep, "- szer szimulálva )"))

lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(ndobas)), type="l", col="orange", lwd=2)

par(mfrow=c(2,2)) 
hist(apply(matrix(sample(x, 5*rep, replace=T), ncol=5, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "5 kockadobás átlaga")
lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(5)), type="l", col="green", lwd=2)

hist(apply(matrix(sample(x, 10*rep, replace=T), ncol=10, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "10 kockadobás átlaga")
lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(10)), type="l", col="yellow", lwd=2)

hist(apply(matrix(sample(x, 30*rep, replace=T), ncol=30, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "30 kockadobás átlaga")
lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(30)), type="l", col="orange", lwd=2)

hist(apply(matrix(sample(x, 100*rep, replace=T), ncol=100, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "100 kockadobás átlaga")
lines(x1, dnorm(x1,mean=3.5,sd=1.707825/sqrt(100)), type="l", col="red", lwd=2)

par(mfrow=c(1,1)) 

##################################################################################
################################### FELADATOK ####################################
##################################################################################

# 4) 
# a) Legyen Z ~ N(0, 1).

# P(Z < 1.645) = ?
pnorm(1.645)
## [1] 0.9500151
# P(Z < z) = 0,95, z = ?
qnorm(0.95)
## [1] 1.644854
# P(Z < -1.645) = ?
pnorm(-1.645)
## [1] 0.04998491
# P(Z < z) = 0,05, z = ?
qnorm(0.05)
## [1] -1.644854
# P(Z > 1,96) = ?
1-pnorm(1.96)
## [1] 0.0249979
pnorm(1.96, lower.tail = FALSE)
## [1] 0.0249979
# b) Legyen X ~ N(25, 3^2).

# P(X < 33) = ?
pnorm(33, mean = 25, sd = 3)
## [1] 0.9961696
# P(X < x) = 0,95, x = ?
qnorm(0.95, mean = 25, sd = 3)
## [1] 29.93456
# P(X < 21) = ?
pnorm(21, mean = 25, sd = 3)
## [1] 0.09121122
# P(X < x) = 0,05, x = ?
qnorm(0.05, mean = 25, sd = 3)
## [1] 20.06544
# P(X > 22) = ?
1-pnorm(22, mean = 25, sd = 3)
## [1] 0.8413447
pnorm(22, mean = 25, sd = 3, lower.tail = FALSE)
## [1] 0.8413447
# P(23 < X < 25) = ?
pnorm(25, mean = 25, sd = 3) - pnorm(23, mean = 25, sd = 3)
## [1] 0.2475075
# 5. ### Táblás gyakorlat 2.11 a) Feladat ###
# Egy tehén napi tejhozamát normális eloszású valószínűségi változóval, 
# m = 22,1 liter várható értékkel és szigma = 1,5 liter szórással modellezzük.
# Mi annak a valószínűsége, hogy egy adott napon a tejhozam 23 és 25 liter közé esik?

########## MEGOLDÁS ##########
pnorm(25, mean = 22.1, sd = 1.5) - pnorm(23, mean = 22.1, sd = 1.5)
## [1] 0.2476555
##############################


# 6. ### Táblás gyakorlat 3.10 Feladat ###
# Tegyük fel, hogy egy populációban az intelligenciahányados (IQ) normális eloszlású 
# 110 várható értékkel és 10 szórással. Mi a valószínűsége, hogy egy véletlenszerűen 
# kiválasztott ember IQ-ja 120 feletti?

########## MEGOLDÁS ##########
1-pnorm(120, mean = 110, sd = 10)
## [1] 0.1586553
# vagy

pnorm(120, mean = 110, sd = 10, lower.tail = FALSE)
## [1] 0.1586553
##############################


# 7. ### Táblás gyakorlat 2.12 Feladat ###
# Mennyi garanciát adjunk, ha azt szeretnénk, hogy termékeink legfeljebb 10%-át kelljen 
# garanciaidőn belül javítani, ha a készülék élettartama 10 év várható értékű és 
# 2 év szórású normális eloszlással közelíthető.

########## MEGOLDÁS ##########
qnorm(0.1, mean = 10, sd = 2)
## [1] 7.436897
##############################



# 8. Magyarországon 2017 tavaszán a 16 éves és idősebb népességen belül a férfiak 
# átlagos magassága 176 cm, 9 cm szórással.

# a) Mennyi annak a valószínűsége, hogy egy véletlenszerűen kiválasztott férfi 
# testmagassága 165 és 185 cm közé esik?
########## MEGOLDÁS ##########
pnorm(185, mean = 176, sd = 9) - pnorm(165, mean = 176, sd = 9)
## [1] 0.7305329
##############################

# b) Mennyi a valószínűsége, hogy egy férfi magasabb 2 méternél?
########## MEGOLDÁS ##########
1 - pnorm(200, mean = 176, sd = 9)
## [1] 0.003830381
##############################

# c) Hány cm-es testmagasság alatt van a férfiak 90%-a? 
########## MEGOLDÁS ##########
round(qnorm(0.9, mean = 176, sd = 9), 1)
## [1] 187.5
##############################

# d) Mekkora testmagasság felett van a férfiak 80%-a?
########## MEGOLDÁS ##########
round(qnorm(0.2, mean = 176, sd = 9), 1)
## [1] 168.4
##############################


# 9. ### Táblás gyakorlat 3.7 Feladat ###
# Tapasztalatok szerint az út hossza, amit egy bizonyos típusú robogó megtesz az első
# meghibásodásáig exponenciális eloszlású valószínűségi változó. Ez a távolság 
# átlagosan 6000 km. Mi a valószínűsége annak, hogy egy véletlenszerűen
# kiválasztott robogó

# a) kevesebb, mint 4000 km megtétele után meghibásodik?
########## MEGOLDÁS ##########
pexp(4000, rate = 1/6000) 
## [1] 0.4865829
##############################

# b) több, mint 6500 km megtétele után hibásodik meg?
########## MEGOLDÁS ##########
1 - pexp(6500, rate = 1/6000) 
## [1] 0.3384654
##############################

# c) 4000 km-nél több, de 6000 km-nél kevesebb út megtétele után hibásodik meg?
########## MEGOLDÁS ##########
pexp(6000, rate = 1/6000) - pexp(4000, rate = 1/6000) 
## [1] 0.1455377
##############################

# d) Legfeljebb mekkora utat tesz meg az elso meghibásodásig a robogók leghamarabb meghibásodó 20%-a?
########## MEGOLDÁS ##########
qexp(0.2, rate = 1/6000)
## [1] 1338.861
##############################


##################################
# Binomiális eloszás: Bin(m, p) #
##################################

n <- 100
m <- 10
p <- 0.3
x1 <- seq(0,10,0.001)
plot(x1,dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(n)),
     type='l', col="red", lwd=2, ylab="", xlab="",
     main='n Binom(10, 0.3) átlagának eloszlása a CHT alapján')
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(5)), type="l", col="green", lwd=2)
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(10)), type="l", col="yellow", lwd=2)
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(30)), type="l", col="orange", lwd=2)
legend(x='topright',bty='n',
       legend = c(paste(c("n = 5","n = 10", "n = 30","n = 100"), sep='=')), 
       col = c("green", "yellow", "orange", "red"), lwd = 2 )

# szimuáció:
n <- 30
m <- 10
p <- 0.3
rep <- 1000    # ismétlések száma

A <- matrix(rbinom(n*rep,m,p), ncol=n, byrow=TRUE)
xbar<-apply(A,1,mean)   # n db átlaga   

head(cbind(A,xbar))
##                                                                      xbar
## [1,] 5 0 3 1 3 3 4 2 5 4 4 3 2 4 2 4 3 2 4 2 2 3 2 1 4 2 5 5 3 2 2.966667
## [2,] 4 5 2 2 2 3 3 3 2 4 2 2 4 3 3 3 4 2 3 5 3 3 1 2 5 1 4 5 5 5 3.166667
## [3,] 3 4 3 2 3 2 3 3 3 0 3 2 4 2 3 2 2 3 1 5 3 2 3 1 2 2 3 2 5 3 2.633333
## [4,] 3 4 3 2 2 4 3 2 3 1 1 3 3 0 4 0 2 5 2 2 4 4 0 1 2 3 3 2 6 6 2.666667
## [5,] 3 3 2 4 2 1 6 4 3 5 3 5 4 2 2 4 5 1 1 1 2 2 3 2 4 5 1 5 1 3 2.966667
## [6,] 3 2 4 6 5 4 3 2 2 3 3 5 2 4 4 5 3 3 5 2 0 5 1 3 2 1 3 2 3 5 3.166667
tail(cbind(A,xbar))
##                                                                         xbar
##  [995,] 3 2 3 5 1 2 2 1 5 3 2 2 5 2 2 2 4 1 4 4 1 2 3 0 5 4 4 4 3 4 2.833333
##  [996,] 2 3 2 3 1 1 3 2 2 0 5 2 3 4 8 5 3 3 4 3 3 4 1 3 2 4 5 6 1 6 3.133333
##  [997,] 3 4 3 2 5 3 1 4 1 0 1 4 3 3 4 7 2 1 2 4 3 4 4 4 2 4 3 3 4 4 3.066667
##  [998,] 3 4 3 4 6 5 3 4 2 2 5 4 4 3 0 6 2 3 2 2 2 1 3 1 4 3 4 3 3 2 3.100000
##  [999,] 4 3 3 3 3 1 2 5 3 3 1 2 3 2 4 2 4 0 2 0 2 2 2 3 3 4 2 3 4 4 2.633333
## [1000,] 7 3 3 3 6 3 4 2 3 5 4 4 4 3 4 2 5 4 1 4 3 5 3 3 5 2 1 4 2 4 3.533333
hist(xbar, col="blue", freq=F, xlab="", ylab="sűrűség", 
     main = paste(n, "Binom(10, 0.3) átlaga (", rep, "- szer szimulálva )"))
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(n)), type="l", col="orange", lwd=2)

par(mfrow=c(2,2)) 
hist(apply(matrix(rbinom(n*rep,m,p), ncol=5, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "5 Binom(10, 0.3) átlaga")
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(5)), type="l", col="green", lwd=2)

hist(apply(matrix(rbinom(n*rep,m,p), ncol=10, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "10 Binom(10, 0.3) átlaga")
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(10)), type="l", col="yellow", lwd=2)

hist(apply(matrix(rbinom(n*rep,m,p), ncol=30, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "30 Binom(10, 0.3) átlaga")
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(30)), type="l", col="orange", lwd=2)

hist(apply(matrix(rbinom(n*rep,m,p), ncol=100, byrow=T),1,mean), 
     col="blue", freq=F, xlim=c(1,6), xlab="", ylab="sűrűség",
     main = "100 Binom(10, 0.3) átlaga")
lines(x1, dnorm(x1,mean=m*p,sd=sqrt(m*p*(1-p))/sqrt(100)), type="l", col="red", lwd=2)

par(mfrow=c(1,1)) 




##################################################################################
################  Gyakorló feladatok (2. táblás gyakorlat utánra) ################
##################################################################################

### Táblás gyakorlat 2.18 Feladat ###

# Tegyük fel, hogy egy tábla csokoládé tömege normális eloszlású 100g várható 
# értékkel és 3g szórással. Legalább hány csokoládét csomagoljunk egy dobozba, 
# hogy a dobozban levo táblák átlagos tömege legalább 0,9 valószínűséggel nagyobb
# legyen 99,5 g-nál, ha feltételezzük, hogy az egyes táblák tömege egymástól 
# független? 

# Legyen X = egy tábla csokoládé tömege  ~ N(100, 3^2)

# X_átlag  ~ N(100, (3/sqrt(n))^2) 
# 0,9 = P(X_átlag > 99.5) = 1- P(X_átlag < 99,5) = 1 - P( std. normal < (99,5-100)/(3/sqrt(n) ) = 
# = 1 - Fi(-sqrt(n)/6) = Fi(sqrt(n)/6)) vagyis qnorm(0.9) = sqrt(n)/6

########## MEGOLDÁS ##########

ceiling( (qnorm(0.9)*6)^2 )
## [1] 60
##############################


### Táblás gyakorlat 2.19 Feladat ###

# Egy scannelt kép átlagos mérete 600KB, 100KB szórással. Mi a valószínűsége, 
# hogy 80 ilyen kép együttesen 47 és 48MB közötti tárhelyet foglal el, ha feltételezzük, 
# hogy a képek mérete egymástól független?

# Legyen X = egy szkennelt kép mérete  ~ N(600, 100^2)

########## MEGOLDÁS ##########

nmu <- 80*600
sqrtnszigma <- sqrt(80)*100

pnorm(48000, mean = nmu, sd = sqrtnszigma) - pnorm(47000, mean = nmu, sd = sqrtnszigma) 
## [1] 0.3682238
##############################


### Táblás gyakorlat 2.20 Feladat ###

# Egy szoftver frissítéséhez 68 file-t kell installálni, amik egymástól függetlenül 
# 10mp várható értékű és 2mp szórású ideig töltődnek.
# a) Mi a valószínűsége, hogy a teljes frissítés lezajlik 12 percen belül?
# b) A cég a következo frissítésnél azt ígéri, hogy az már 95% valószínűséggel 10
#    percen belül betöltődik. Hány file-ból állhat ez a frissítés?

# Legyen X = egy fájl telepítési ideje  ~ N(10, 2^2)

# a) P(S_n < 12 perc) = P(S_n < 12*60 mp) = P( std. normal < (720 - n*10)/(sqrt(n)*2) )

########## MEGOLDÁS ##########

nmu <- 680
sqrtnszigma <- sqrt(68)*2

pnorm(720, mean = nmu, sd = sqrtnszigma) 
## [1] 0.9923533
##############################

# b) 0.95 < P(S_n < 600) = P( std. normal < (600-10n)/(2sqrt(n)) )

########## MEGOLDÁS ##########

floor( ( ( -2*qnorm(0.95) + sqrt( (2*qnorm(0.95))^2 + 4*10*600 ) ) / (2*10) )^2 )
## [1] 57
##############################