Pomocou simulácií riešte nasledujúce úlohy:
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
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:
shape1 (zodpovedá parametru \(a\) z definície) a shape2
(zodpovedá parametru \(b\))dbeta, distribučná funkcia pbeta, náhodné
čísla rbetaUkáž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)\).
Zvoľte si parametre a vygenerujte počty úspechov v takýchto pokusoch.
Graficky porovnajte relatívne početnosti jednotlivých výsledkov s pravdepodobnosťami binomického rozdelenia, ktoré uvažuje rovnaký počet pokusov a pravdepodobnosť úspechu rovnú strednej hodnote beta rozdelenia.
Ktoré rozdelenie má väčšiu disperziu a aké je intuitívne vysvetlenie? Porovnajte simulačne disperziu počtu úspechov
# 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"))