Spojité pravdepodobnostné rozdelenia (1)

Metódy riešenia úloh z pravdepodobnosti a štatistiky

Generovanie náhodných čísel z rovnomerného rozdelenia na danom intervale

set.seed(12345)
x <- runif(5, min = 1, max = 2) # 5 cisel z intervalu (1, 2)
x
[1] 1.720904 1.875773 1.760982 1.886125 1.456481
y <- runif(3) # defaultne min = 0, max = 1
y
[1] 0.1663718 0.3250954 0.5092243
z <- runif(1000, min = -1, max = 1)
hist(z)

hist(z, breaks = 20)

# zaokruhlene hodnoty
tabulka <- prop.table(table(round(z)))
tabulka

   -1     0     1 
0.227 0.520 0.253 

Graficky - stĺpcový graf (barplot), nie histogram (lebo máme presné hodnoty, v ktorých chceme zobraziť stĺpce):

Cvičenie: Aké je presné pravdepodobnostné rozdelenie náhodnej premennej z posledného výpočtu (round(z))?

Príklad

Romeo a Júlia sa chcú stretnúť. Na miesto stretnutia prídu v náhodnom čase, ktorý si každý z nich nezávisle zvolí rovnomerne náhodne medzi 18:00 a 20:00. Ak prídu na dohodnuté miesto stretnutia a nenájdu tam svojho partnera, budú čakať 15 minút. Aká je pravdepodobnosť, že sa im podarí stretnúť?

Prístup 1 (funkcia pre jednu simuláciu, potom replicate)

priklad1 <- function(){
  prichody <- runif(2, min = 0, max = 120) # dva body, nezavisle rovnomerne na (0, 120)
  rozdiel <- abs(prichody[1] - prichody[2])
  
  # ALEBO: 
  # dlzka <- abs(body[2] - body[2])
  
  # ALEBO:
  # funkcia `diff` = difference
  # dlzka <- abs(diff(body))
  
  return(rozdiel < 15)
}

set.seed(123)
N <- 10^5

simulacie_priklad1 <- replicate(N, priklad1())
prop.table(table(simulacie_priklad1))
simulacie_priklad1
  FALSE    TRUE 
0.76628 0.23372 

Prístup 2 (generujeme vektory náhodných čísel)

set.seed(123)
N <- 10^5

romeo <- runif(N, min = 0, max = 120) # N prichodov Romea
julia <- runif(N, min = 0, max = 120) # N prichodov Julie
rozdiely <- abs(romeo - julia)        # prislusne rozdiely 

simulacie_priklad1b <- rozdiely < 15  # vysledok: porovnanie s 15
prop.table(table(simulacie_priklad1b))
simulacie_priklad1b
  FALSE    TRUE 
0.76764 0.23236 

Grafické znázornenie:

set.seed(123)
N <- 10^4 # zmensime pre lepsie kreslenie

romeo <- runif(N, min = 0, max = 120) # N prichodov Romea
julia <- runif(N, min = 0, max = 120) # N prichodov Julie
rozdiely <- abs(romeo - julia)        # prislusne rozdiely

farba <- ifelse(rozdiely < 15, "blue", "red") # uzitocna funkcia `ifelse`

plot(romeo, julia, col = farba)

Úpravy pre vylepšenie grafu:

  • asp = 1 - aby sa mali osi rovnakú mieru
  • pch = 20 - body ako plné krúžky
  • legenda pomocou legend, napr.
legend("topright",
       legend = c("stretnu sa", "nestretnu sa"),
       col = c("blue", "red"),
       pch = 20)

Nepovinné pre záujemcov - balík ggplot2

set.seed(123)
N <- 10^4

romeo <- runif(N, min = 0, max = 120)
julia <- runif(N, min = 0, max = 120)

# dataframe - stplce mozu mat rozny typ (cislo, retazec, logicka hodnota, ...)
df <- data.frame(romeo = romeo,
                 julia = julia,
                 rozdiely = abs(romeo - julia)
                 )

df$stretnutie <- df$rozdiely < 15

head(df) # head = zaciatok
      romeo     julia  rozdiely stretnutie
1  34.50930  37.27100  2.761701       TRUE
2  94.59662  38.94241 55.654209      FALSE
3  49.07723 104.43050 55.353271      FALSE
4 105.96209  39.44085 66.521235      FALSE
5 112.85607  15.08415 97.771926      FALSE
6   5.46678  42.74657 37.279792      FALSE
library(ggplot2)

ggplot(df, aes(x = romeo, y = julia, color = stretnutie)) +
    geom_point(size = 1) + # geom_point - bodovy graf + nastavime velkost bodov
    scale_color_manual(    # nastavenie farieb
        values = c("TRUE" = "blue", "FALSE" = "red"),
        name = "Stretnuie"
    ) +
    labs(x = "Romeo", y = "Julia") + # popis osi
    theme_minimal() +                # bez siveho podkladu
    coord_fixed()                    # ekvivalent `asp = 1`

Príklady s rovnomerným rozdelením

Vo všetkých zadaniach sa pod náhodnou voľbou bodov, čísel a pod. rozumie výber z rovnomerného rozdelenia na danej množine. V prípade výberu viacerých hodnôt sú tieto hodnoty nezávislé.

  • Na úsečke AB sú náhodne zvolené body L a M. Aká je pravdepodobnosť, že bod L je bližšie k bodu M ako k bodu A?

  • Na úsečke dĺžky 1 sú náhodne zvolené dva body, ktoré úsečku rozdelia na tri časti. Aká je pravdepodobnosť, že žiadna z tých častí nebude dlhšia ako 3/4?

  • Tyč dĺžky 200 cm sa náhodne rozlomí na kusy. Určte pravdepodobnosť, že niektorý z nich bude mať dĺžku nanajvýš 10 cm, ak je tyč rozlomená na dvoch miestach?

  • Tyč dĺžky 200 cm sa náhodne rozlomí na kusy. Určte pravdepodobnosť, že niektorý z nich bude mať dĺžku nanajvýš 10 cm, ak je tyč rozlomená na troch miestach?

Exponenciálne a normálne rozdelenie (a iné rozdelenia)

Videli sme:

  • runif: r je skratka random unif je skratka uniform

Analogicky náhodné čísla z iných rozdelení:

  • rnorm z normálneho rozdelenia
  • rexp z exponenciálneho rozdelenia

Zadávajú sa parametre:

x <- rnorm(10^5, mean = 10, sd = 2) # stredna hodnota 10, standardna odchylka 2
hist(x)

mean(x)
[1] 10.00581
var(x)  # vyberova disperzia
[1] 4.008562
y <- rexp(10^5, rate = 1/2) # pozrite vyznam parametra `rate` pomocou ?rexp
hist(y)

mean(y)
[1] 1.999097
var(y)
[1] 3.995737

Príklady s normálnym a exponenciálnym rozdelením

  • Životnosť žiarovky má exponenciálne rozdelenie so strednou hodnotou 1 (jednotku času teda uvažujeme takú, že je ňou očakávaná životnosť žiarovky). Kúpili sme 10 žiaroviek a postupne ich vymieňame. Aké je pravdepodobnostné rozdelenie času, počas ktorého nám týchto 10 žiaroviek bude stačiť?

  • Pri meraní prístrojom vzniká chyba, ktorá má normálne rozdelenie s nulovou strednou hodnotou a so štandardnou odchýlkou 2 mm. Aká je pravdepodobnosť, že dve nezávislé merania budú mať chyby v absolútnej hodnote väčšiu ako 1 mm, pričom tieto chyby budú mať rôzne znamienka?

  • Náhodná premenná má lognormálne rozdelenie, ak má tvar \(exp(X)\), kde \(X\) je náhodná premenná s normálnym rozdelením. Určte strednú hodnotu lognormálne rozdelenej náhodnej premennej, ak jej logaritmus má rozdelenie \(N(0, 1)\).

  • Test obsahuje 60 otázok a na jeho vypracovanie je 180 minút. Práca na odpovedi sa skladá z dvoch častí. Najskôr sa spraví rozbor úlohy, čas potrebný na rozbor je náhodná premenná \(S\) (screen time). Počas rozboru sa určí čas \(W\) (working time), ktorý bude potrebný na vypracovanie, teda dokončenie výpočtov, úprava výsledku a pod. Predpokladá sa, že \(S\), \(W\) sú nezávislé náhodné premenné a sú nezávislé aj pre jednotlivé otázky. Predpokladajme, že študent zo skúsenosti so vzorovými testami vie, že \(S\), \(W\) majú exponenciálne rozdelenie so strednými hodnotami \(1,77\) a \(4,23\) minúty. Jeho stratégia je nasledovná: Ak sa po dokončení rozboru zistí, že doba vypracovania \(W\) bude väčšia ako \(K\), nebude strácať čas vypracovaním, ale pôjde robiť rozbor ďalšej úlohy. Úlohou je nájsť optimálnu hodnotu \(K\), ktorá maximalizuje strednú hodnotu počtu vyriešených príkladov. Ak bude príliš veľké, môže sa stať, že vypracovanie niekoľkých náročných otázok zaberie príliš veľa času a nezostane čas na ostatné. Pri malej hodnote sa zase budú robiť rozbory, ale riešiť sa bude len málo príkladov. Treba nájsť vhodný kompromis.