22/11/07 04:43:03.90 x8iiUgi1.net
任意の確率密度関数に従う乱数をプログラムで発生させれば平均や分散が計算できる。
累積密度関数の逆関数を作って(数式化できないことが多いのでニュートン法で数値解を出させる)
それに一様分布乱数を与えればその確率密度関数に従う乱数を発生させることができる。
Neuman法で作ることも可能だけどこれは、発生する乱数を決めることができないのが欠点
例題
半円の形をした確率密度関数 f(x) = (2/π)*√(1-x^2) に従う乱数を10000個発生させて
ヒストグラムを描画して平均、分散、標準偏差を求めなさい。
URLリンク(i.imgur.com)
> summary(y)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.998 -0.404 0.000 0.000 0.404 0.998
> mean(y)
[1] -2.1568e-09
> var(y)
[1] 0.25002
> sd(y)
[1] 0.50002
十分に近似しているので、Fisher先生のお許しがでそう。