2010年1月16日土曜日

ダブルガウシアンの作成

ダブルガウシアンというのは、その名の通り、ガウス分布を二つ重ねたものです。
ピークが2つ登場することに特徴があります。
ダブルガウシアンから値を取得することをRでコーディングしてみました。

ちなみに、単純にN(0,1)+N(1,2)のようにするのはダメ。
再生性よりN(0+1,1+2)=N(1,3)になり、ピークが1箇所になってしまいます。

gauss1 <- rnorm(200,-100,10);# N(-100,10)から200点ランダムに取得
gauss2 <- rnorm(200,200,10);# N(200,10)から200点ランダムに取得

reproductiveGauss <- gauss1 + gauss2; # ガウス分布の再生性よりN(100,20)
# こちらが合成した2つのガウス分布の確率密度関数に相当する
# 100点のみを取得しているが、数がある程度あれば、問題ない
doubleGauss <- sample(c(gauss1,gauss2),100,rep=FALSE);
par(mfrow=c(2,1));
hist(reproductiveGauss,breaks=20);
hist(doubleGauss,breaks=20);
その結果は下図のようになります。結果の違いがすぐに見て取れますね。

フォロワー

ページビューの合計