7. feladat: Adott eloszlásfüggvényű véletlen számok generálása
- Egy \(X\) valószínűségi változó eloszlásfüggvénye a \([0,2]\)
intervallumon a következő:
\[
F_X(x) =
\begin{cases}
2x^2/9, &\text{ha \(x\in[0,1.5]\),}\\
-x^2+4x-3, &\text{ha \(x\in(1.5,2]\).}
\end{cases}
\]
Írjunk Python függvényt, mely szimulál egy ilyen
eloszlásfüggvényű valószínűségi változót, azaz amely minden
meghívására visszaad egy \(F_X\) szerinti véletlen
számot. Írjunk programot, mely \(1000\) ilyen véletlen számot
generál. Az első sorba írjuk ki ezek átlagát 5 tizedes jegyig, a másodikba azt, hogy mennyi az
\(1.5\) relatív gyakorisága 3 tizedes jegyig.
- Egy kis számolási feladatot is el kell itt végezni: a
szimulációban visszaadott két számnak mennyi az elméleti
értéke, azaz számítsuk ki és írjuk ki a harmadik sorba az
\(\mathbb{E}(X)\) értékét 5 tizedes jegyig és a negyedik sorba \(\mathbb{P}(X=1.5)\) pontos értékét hányadosként (Segítség: konverzió hányados alakra). Az
\(\mathbb{E}(X)\) kiszámításához használjuk
a sympy vagy
a scipy csomagot!
- A feltöltendő fájl neve CDF.py legyen.
- Segítség ahhoz, hogy a sűrűségfüggvény ismerete nélkül hogyan
számolható a várható érték: ha
\(X\ge0\), akkor
\(\mathbb{E}(X)=\int_0^\infty 1-F_X(x)\,\mathrm{d}x\) (lásd pl.
stackexchange
második és utolsó válasz).
- Segítség ahhoz, hogy hogyan tudunk egyenletes eloszlásból
tetszőleges eloszlást generálni az eloszlásfüggvény inverzével
(ld. Wikipedia). Legelőször
tehát meg kell határoznunk \(F_X\) inverzét! Itt gondoljuk meg
azt is, hogy mit tegyünk, ha \(F_X\)-nek szakadási helye van
(ekkor kicsit módosítani kell az \(F_X\) inverzén).
- A feladat célja valószínűségi változó függvényének, például az
\(F_X(X)\) valószínűségi változónak a megértése, és ezt használva
adott eloszlású valószínűségi változó szimulálása.