Pomocou simulácií riešte nasledujúce úlohy:

Príklad: rovnomerné rozdelenie úspešnosť na písomke

Predpokladajme, že úspešnosť študenta na písomke má rovnomerné rozdelenie na intervale \((0,1)\) (po vynásobení 100 dostaneme úspešnosť v percentách). Výsledky jednotlivých študentov sú nezávislé.

Písomku písali aj Dlhý, Široký a Bystrozraký. Dlhý sa dozvedel neoficiálnu informáciu, že jeho úspešnosť bola viac ako \(0.6\), presný výsledok, ani výsledky svojich kamarátov ešte nevie. Aká je pravdepodobnosť, že má viac bodov ako oni?

pisomka1 <- function(){
  while(1){
    vysledky <- runif(3, min = 0, max = 1)
    if(vysledky[1] > 0.6) break
  }
  porovnanie <- (vysledky[1] > vysledky[2:3])
  return(all(porovnanie))
}

set.seed(123)
pocet_simulacii <- 10^5
pisomka1_simulacia <- replicate(pocet_simulacii, pisomka1())
prop.table(table(pisomka1_simulacia))
## pisomka1_simulacia
##   FALSE    TRUE 
## 0.34601 0.65399

Modifikácia: beta rozdelenie namiesto rovnomerného

Na modelovanie hodnôt medzi 0 a 1 sa používa často beta rozdelenie (rovnomerné rozdelenie je jeho špeciálnym prípadom). Jeho hustota je nenulová na intervale \((0,1)\) a môže mať rôzny tvar v závislosti od parametrov \(a\), \(b\). Jeho hustota je úmerná \(x^{a-1} (1-x)^{b-1}\).

V R-ku:

Ukážky :

curve(dbeta(x, shape1 = 50, shape2 = 20), from = 0, to = 1, col = "red", ylab = "hustota", n = 1000)
curve(dbeta(x, shape1 = 5, shape2 = 2), from = 0, to = 1, col = "green", add = TRUE)
curve(dbeta(x, shape1 = 2, shape2 = 5), from = 0, to = 1, col = "blue", add = TRUE)
curve(dbeta(x, shape1 = 2, shape2 = 2), from = 0, to = 1, col = "black", add = TRUE)

Predpokladajme teraz, že úspešnosť študenta na písomke má beta rozdelenie. Výsledky jednotlivých študentov sú nezávislé.

Zadanie 1.

Písomku písali aj Dlhý, Široký a Bystrozraký. Dlhý sa znovu dozvedel neoficiálnu informáciu, že jeho úspešnosť bola viac ako \(0.6\), presný výsledok, ani výsledky svojich kamarátov ešte nevie. Aká je pravdepodobnosť, že má viac bodov ako oni, ak parametre beta rozdelenia úspešnosti sú

Na základe grafov hustôt vysvetlite rozdiely.

pisomka2 <- function(parametre){
  a <- parametre[1]
  b <- parametre[2]
  while(1){
    vysledky <- rbeta(3, shape1 = a, shape2 = b)
    if(vysledky[1] > 0.6) break
  }
  porovnanie <- (vysledky[1] > vysledky[2:3])
  return(all(porovnanie))
}

pisomka2_simulacia <- function(parametre, pocet_simulacii = 10^5){
  simulacia <- replicate(pocet_simulacii, pisomka2(parametre))
  return(prop.table(table(simulacia)))
}

set.seed(123)
parametre <- list(zadanieA = c(50, 20), 
                  zadanieB = c(5, 2), 
                  zadanieC = c(2, 5),
                  zadanieD = c(2, 2))
odhady <- lapply(parametre, pisomka2_simulacia)
odhady
## $zadanieA
## simulacia
## FALSE  TRUE 
## 0.658 0.342 
## 
## $zadanieB
## simulacia
##   FALSE    TRUE 
## 0.56953 0.43047 
## 
## $zadanieC
## simulacia
##   FALSE    TRUE 
## 0.04086 0.95914 
## 
## $zadanieD
## simulacia
##   FALSE    TRUE 
## 0.31016 0.68984
farby <- c("red", "green", "blue", "black")
for(i in 1:length(parametre)){
  par <- parametre[[i]]
  curve(dbeta(x, par[1], par[2]), 
        from = 0, to = 1, n = 1000,
        add = i > 1, 
        col = farby[i],
        ylab = "hustota")
}

legend("topleft",
       lty = 1,
       legend = names(parametre),
       col = farby)

Zadanie 2.

Aká je pravdepodobnosť, že študent s parametrami \(a=3\), \(b=6\) napíše písomku lepšie ako študent s parametrami \(a=8\), \(b=4\)? Nakreslite hustoty a skomentujte výsledok.

pisomka3 <- function(){
  a <- rbeta(1, shape1 = 3, shape2 = 6)
  b <- rbeta(1, shape1 = 8, shape2 = 4)
  return(a > b)
}

set.seed(123)
pocet_simulacii <- 10^5
pisomka3_simulacia <- replicate(pocet_simulacii, pisomka3())
prop.table(table(pisomka3_simulacia))
## pisomka3_simulacia
##   FALSE    TRUE 
## 0.94427 0.05573
curve(dbeta(x, shape1 = 8, shape2 = 4), 
      from = 0, to = 1, 
      col = "blue", 
      ylab = "hustota")
curve(dbeta(x, shape1 = 3, shape2 = 6), 
      from = 0, to = 1, 
      col = "red",
      n = 1000, 
      add = TRUE)

legend("topleft",
       lty = 1,
       legend = c("A", "B"),
       col = c("red", "blue"))

Zadanie 3.

Uvažujme postupnosť nezávislých pokusov, v ktorých má pravdepodobnosť úspechu beta rozdelenie so zvolenými parametrami. Stredná hodnota beta rozdelenia je \(a/(a+b)\).

# parametre beta rozdelenia
a <- 3
b <- 6
# parameter binomickeho rozdelenia
p <- a/(a + b)
# pocet pokusov
n <- 10

pokusy <- function(){
  p_nahodne <- rbeta(1, a, b)
  vysledky <- sample(c(1, 0), size = n, replace = TRUE,
                     prob = c(p_nahodne, 1 - p_nahodne))
  pocet_uspechov <- sum(vysledky)
  return(pocet_uspechov)
}

set.seed(123)
simulacia <- replicate(10**5, pokusy())
# disperzia binomickeho rozdelenia
n*p*(1 - p)
## [1] 2.222222
# odhad disperzie pri nahodnych pravdepodobnostiach (nahodnost zvysuje disperziu)
var(simulacia)
## [1] 4.22032
# strednu hodnotu nahodnost `p` neovplyvnuje
n*p
## [1] 3.333333
mean(simulacia)
## [1] 3.33362
simulacia <- factor(simulacia, levels = 0:10)
rel_pocetnosti <- prop.table(table(simulacia))
rel_pocetnosti
## simulacia
##       0       1       2       3       4       5       6       7       8       9 
## 0.06923 0.13615 0.17689 0.18000 0.15939 0.12143 0.08078 0.04544 0.02144 0.00780 
##      10 
## 0.00145
binomicke <- dbinom(0:10, n, p)

barplot(rbind(rel_pocetnosti, binomicke), beside = TRUE, col = c("red", "blue"))
legend("topright",
       legend = c("náhodná pravdepodobnosť úspechu", "binomické"),
       fill = c("red", "blue"))