vzorkování z normálního rozdělení pomocí Box-Mullerovy transformace
soukromí & Cookies
tento web používá cookies. Pokračováním souhlasíte s jejich použitím. Další informace, včetně toho, jak ovládat soubory cookie.
normální distribuce je tahounem mnoha běžných statistických analýz a schopnost čerpat vzorky z této distribuce leží v srdci mnoha algoritmů statistického/strojového učení. Byla vyvinuta řada metod pro vzorkování z normální distribuce, včetně vzorkování inverzní transformace, algoritmu Ziggurat a metody poměru (technika odběru vzorků odmítnutí). V tomto příspěvku se zaměříme na elegantní metodu nazvanou Box-Mullerova transformace.
rychlý přehled kartézských a polárních souřadnic.
než budeme moci hovořit o použití Box-Mullerovy transformace, obnovme naše chápání vztahu mezi kartézskými a polárními souřadnicemi. Z geometrie si možná pamatujete, že pokud x a y jsou dva body v kartézské rovině, mohou být reprezentovány v polárních souřadnicích s poloměrem a úhlem
pomocí následujících vztahů:
, a proto
Všimněte si, že pokud a
, pak mapujeme hodnoty obsažené v jednotkovém kruhu, jak je znázorněno na obrázku níže. Všimněte si také, že náhodné proměnné v takovém kruhu mohou být generovány transformací hodnot vzorkovaných z jednotného rozdělení. Konkrétně mohou být poloměry odebrány z
a úhel může být odebrán z
. Kreslení bodů v kruhu pomocí jednotných proměnných) je jádrem Box-Mullerovy transformace pro vzorkování normálních náhodných proměnných.

příklad vztahu mezi kartézskými a polárními souřadnicemi
kreslení normálně distribuovaných vzorků pomocí Box-Mullerovy transformace
Ok, Nyní, když jsme diskutovali o tom, jak jsou kartézské souřadnice reprezentovány v polárních souřadnicích, pojďme k tomu, jak můžeme tento vztah použít ke generování náhodných proměnných. Box-Mullerův vzorkování je založeno na reprezentaci společného rozdělení dvou nezávislých standardních normálních náhodných kartézských proměnných a
v polárních souřadnicích. Společné rozdělení (které je kruhově symetrické) je:
pokud si všimneme, že výraz v čitateli exponentu je roven
(jak je uvedeno výše), můžeme vytvořit spojení mezi kartézskou reprezentací společného normálního rozdělení a jeho polární reprezentací:
což je součin dvou hustotních funkcí, exponenciálního rozdělení na čtvercové poloměry:
a rovnoměrné rozložení úhlů:
stejně jako výše uvedené při generování bodů na jednotkovém kruhu. Nyní, pokud uděláme další spojení mezi exponenciálním rozdělením a rovnoměrným rozdělením, a to:
pak
to nám dává způsob, jak generovat body ze společného Gaussova rozdělení vzorkováním ze dvou nezávislých rovnoměrných distribucí, jednoho pro a druhého pro
, a transformovat je do kartézských souřadnic pomocí výše uvedených vztahů. Podrobně postupuje následovně:
- Draw,
- Transformujte proměnné na poloměr a úhlovou reprezentaci
a
- Transformujte poloměr a úhel na kartézské souřadnice:
jaké výsledky jsou dvě nezávislé normální náhodné proměnné, a
. Implementace Box-Mullerova algoritmu v Matlabu je uvedena níže:
% NORMAL SAMPLES USING BOX-MUELLER METHOD% DRAW SAMPLES FROM PROPOSAL DISTRIBUTIONu = rand(2,100000);r = sqrt(-2*log(u(1,:)));theta = 2*pi*u(2,:);x = r.*cos(theta);y = r.*sin(theta);% DISPLAY BOX-MULLER SAMPLESfigure% X SAMPLESsubplot(121);hist(x,100);colormap hot;axis squaretitle(sprintf('Box-Muller Samples Y\n Mean = %1.2f\n Variance = %1.2f\n Kurtosis = %1.2f',mean(x),var(x),3-kurtosis(x)))xlim()% Y SAMPLESsubplot(122);hist(y,100);colormap hot;axis squaretitle(sprintf('Box-Muller Samples X\n Mean = %1.2f\n Variance = %1.2f\n Kurtosis = %1.2f',mean(y),var(y),3-kurtosis(y)))xlim()

Box-Mullerovy vzorky pro normální distribuci
balení
výstup kódu MATLAB je uveden výše. Všimněte si, že první, druhý a čtvrtý centrální moment (průměr, rozptyl a kurtóza) generovaných vzorků jsou v souladu se standardním normálem. Box-Mullerova transformace je dalším příkladem toho, jak jednotné proměnné na intervalu (0,1) a mohou být transformovány, aby se vzorek ze složitějšího rozdělení.
Write a Reply or Comment