Box-Muller変換を用いた正規分布からのサンプリング
プライバシー&クッキー
このサイトはクッキーを使用しています。 継続することにより、あなたはそれらの使用に同意します。 Cookieの制御方法など、詳細についてはこちらをご覧ください。
正規分布は多くの一般的な統計分析の主力であり、この分布からサンプルを描画できることは、多くの統計/機械学習アルゴリズムの中心にあ 逆変換サンプリング、Zigguratアルゴリズム、比法(拒絶サンプリング技術)など、正規分布からサンプリングするために開発された多くの方法がありました。 この記事では、Box-Muller変換と呼ばれるエレガントな方法に焦点を当てます。
デカルト座標と極座標の簡単なレビュー。
Box-Muller変換の使用について説明する前に、デカルト座標と極座標の関係についての理解を新たにしましょう。 幾何学から、Xとyがデカルト平面内の2点である場合、半径と角度
を持つ極座標で表すことができることを覚えているかもしれません。:R^2=x^2+y^2+x^2+y^2^2
\したがって、
x=r\cos(\theta)=\frac{y}{x}したがって、
x=r\cos(\theta)=\frac{y}{x}
と
の場合、下の図に示すように、単位円に含まれる値をマッピングすることに注意してください。 また、このような円の中の確率変数は、一様分布からサンプリングされた値を変換することによって生成できることに注意してください。 具体的には、半径は
からサンプリングすることができ、角度は
からサンプリングすることができます。 同様のメカニズム(一様変数を使用して円内に点を描画する)は、正規確率変数をサンプリングするためのボックス-ミュラー変換の中心にあります。

デカルト座標と極座標の関係の例
Box-Muller変換
を使用した正規分布サンプルの描画さて、デカルト座標が極座標でどのように表されるかを議論したので、この関係を使用して確率変数を生成する方法に移りましょう。 ボックスミュラーサンプリングは、二つの独立した標準正規ランダム直交変数との共同分布を表すことに基づいています
極座標で。 結合分布(円対称)は次のようになります。:\P(x、y)=p(x)p(y)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}\frac{1}{\sqrt{2\pi}}e^{-\frac{y}{\sqrt{2\pi}}\frac{1}{\sqrt{2\pi}}\frac{1}{\sqrt{2\pi}}\frac{1}{\sqrt{2\pi}}\frac{1}{\sqrt{2\pi}}\frac{1}{\sqrt{2\pi}}\frac{1}{\sqrt{2\pi}}\frac{1}{\sqrt{2\^2}{2}}
指数の分子内の項が
(上記のように)に等しいことに気付いた場合、ジョイント正規分布のデカルト表現とその極座標表現との間の接続:P p(x、y)=\左(\frac{1}{2\pi}\右)\左(e^{\frac{-r^2}{2}}\右)pは、p p(x、y)=\左(\frac{1}{2\pi}\右)eは、p p(x、y)=\左(\frac{1}{2\pi}\右)eを意味します。)
これは二乗半径上の指数分布である二つの密度関数の積です:
そして角度上の均一な分布:
単位円上の点を生成するときに上記のものと同じように。 さて、我々は指数分布と一様分布の間に別の接続を行う場合、すなわち:1087>
次に、
これにより、2つの独立した一様分布(1つは、もう1つは
)からサンプリングし、それらを上記の関係を介してデカルト座標に変換することによ 詳細には、手順は次のようになります:
- ドロー、
- 変数を半径と角度表現に変換します。
、および
- 半径と角度をデカルト座標に変換します。
どのような結果は、2つの独立した正規確率変数、と
です。 Box-MullerアルゴリズムのMATLAB実装を以下に示します:
% 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-Mullerサンプル
ラップアップ
MATLABコードの出力は上に示されています。 生成されたサンプルの第一、第二、および第四の中心モーメント(平均、分散、および尖度)が標準法線と一致していることに注意してください。 Box-Muller変換は、区間(0,1)上の一様な変数の別の例であり、より複雑な分布から標本化するために変換することができます。
Write a Reply or Comment