Tööleht on valminud Hariduse Infotehnoloogia Sihtasutuse IT Akadeemia programmi toel

Teema 1: Lihtsa juhusliku suuruse genereerimine

Algoritm:

Vaatleme juhuslikku suurust, mille võimalikeks väärtusteks on \(c_1 < c_2\ldots < c_m\)
olgu \(p_1,p_2,\ldots,p_m\) vastavad tõenäosused

  1. Tekime ühtlase jaotusega pseudojuhuslikud arvud \(u_1,\ldots,u_n\)
  2. Kui \(u_i\in (0,p_1]\), siis \(x_i=c_1\),
    kui \(u_i\in (p_1,p_1+p_2]\), siis \(x_i=c_2\)
    kui \(u_i\in (p_1+p_2,p_1+p_2+p_3]\), siis \(x_i=c_3\) jne

Harjutus 1

Vaatleme diskreetset juhuslikku suurust, mille jaotustabel on järgmine:

\(c_i\) 1 3 4.5 7
\(p_i\) 0.3 0.2 0.4 0.1

Tekita 1000 pseudojuhuslikku arvu sellest jaotusest, lähtudes käsuga runif genereeritud pseudojuhuslikest arvudest vahemikus (0, 1). Kontrolli tulemuste vastavust soovitud jaotusele \(\chi^2\)-testiga


Vihjed Kasuks tulevad järgmised käsud: cumsum, cut, as.numeric ja teadmine, et vektori indeksisse võib kirjutada täisarvude jada, nt vektorite a ja b=c(1,1,3,2) korral a[b] annab tulemuseks vektori värtustega a[1],a[1],a[3],a[2]

Tulemus juhul, kui enne runif kasutada set.seed(100)


    Chi-squared test for given probabilities

data:  tabel
X-squared = 6.7875, df = 3, p-value = 0.07899


Harjutus 2

Tegelikult on R-is mugav vahend selliste ülesannete lahendamiseks, nimelt käsk sample. Sõltumatu valimi saamiseks tuleb kasutada suvandit replace = TRUE. Vaata käsu spikrit (nt käsuga ?sample). Leia ligikaudselt tõenäosus \[ P(\sum_{i=1}^{5}X_i^2<100),\] kus \(X_i, i=1,\ldots,5\) on eelmises ülesandes vaadeldud jaotusega sõltumatud juhuslikud suurused. Genereeri selleks 1000 summa väärtust, kusjuures vajaminevad pseudojuhuslikud arvud tekita sample käsku kasutades.

Tulemus juhul, kui enne sample käsku kasutada set.seed(100)

[1] 0.807


Teema 2: Juhusliku suuruse väärtuste genereerimine pöördfunktsiooni või üldistatud pöördfunktsiooni kasutades.

Kui juhusliku suuruse jaotusfunktsioon on pööratav piirkonnas \(\{x: 0<F(x)<1\}\), siis saame selle jaotusega juhuslikke suuruseid tekitada pöördfunktsiooni \(F^{-1}\) kasutades kujul \(X=F^{-1}(U)\), kus \(U\) on jaotusega \(U(0,\,1)\) juhuslik suurus.

Harjutus 3

Leia jaotusfunktsiooni

\[F(x)=\begin{cases}0,& x<1,\\ \frac{x-1}{2},& 1\leq x<2,\\ \frac{x}{4},& 2\leq x<4,\\ 1,& x\geq 4 \end{cases}\] pöördfunktsioon ja genereeri seda kasutades \(300\) pseudojuhuslikku arvu sellest jaotusest. Kontrolli genereeritud arvude vastavust toodud jaotusfunktsioonile Kolmogorov-Smirnovi testi abil.


Defineerime üldistatud pöördfunktsiooni valemiga \[ F^{-}(y)=\inf \{ a\,:\, F(a)\geq y \},\ y\in (0,\,1) \]

Teoreem: Olgu \(F\) jaotusfunktsioon ning olgu \(U\) ühtlase jaotusega \(U(0,\,1)\) juhuslik suurus. Siis juhusliku suuruse \(X=F^{-}(U)\) jaotusfunktsiooniks on \(F\)

Harjutus 4

Kasuta üldistatud pöördfunktsiooni selleks, et käsuga runif(1000) genereeritud jaotusega \(U(0,\,1)\) pseudojuhuslikust arvust saada jaotusfunktsioonile

\[F(x)=\begin{cases}0,& x <1\\ \frac{x^2-1}{4},& 1\leq x <2\\ 1,& x\geq 2 \end{cases}\] vastavad pseudojuhuslikud arvud. Leia nende abil ligikaudselt vastava juhusliku suuruse keskväärtus.

Tulemus juhul, kui lahenduse alguses kasutada set.seed(100)

[1] 1.685905


Harjutus 5

Kasuta pöördfunktsiooni meetodit selleks, et käsuga runif(1000) genereeritud jaotusega \(U(0,\,1)\) pseudojuhuslikest arvudest saada pseudujuhuslikke arve tihedusfunktsioonile

\[ f(x)=0.5 e^{-|x|},\ x\in R\] vastavast jaotusest. Kontrolli saadud arvude vastavust soovitud jaotusele visuallselt (võrreldes histogrammi tihedusfunktsiooniga).