- 読書ノート アーカイブ:http://yagays.github.com/blog/2012/10/20/archive-introducing-monte-carlo-methods-with-r/
内容:一様分布を元にして様々な確率分布に従う乱数を生成する
統計解析ソフトであるRには,様々な分布に対応した組み込み関数が用意されている.本章では,そういった組み込み関数を使わずに,一様分布から生成される乱数を逆関数で変換することで,他の確率分布の乱数を表現する.
本書で扱う乱数とは,完全なランダム性を持つ乱数ではなく擬似乱数である.擬似乱数はset.seed()関数で設定した値を種として乱数を生成するため,どのような環境においてもset.seed()関数で同じ値を使うことで乱数を再現することができる.
今回は,一様乱数を元にして指数乱数を生成し,指数乱数からガンマ分布やベータ分布の乱数へと変換していく.これらの確率分布は全てRの関数で用意されているものなので,一様乱数から生成した乱数とRの関数から生成した乱数を比較することによって,乱数の生成がうまくいっているかどうかを判断する.以下のコードで描写したヒストグラムはすべて,左側が一様分布から生成した乱数,右側がRの関数を用いて生成した乱数(N=104 ).赤い曲線はどちらもRの関数を用いて分布を示したもの.
例 2.1 一様乱数から指数乱数を作成する
これはテキストにある通りのコードと作図.mcsmパッケージのdemo(Chapter.2)にも同様のコードがある.
以下のコードではをそのままコードに落とし込んでいる.テキストにもある通り,ならば0から1の間で一様に等しい確率分布なのだがら,もも一様分布になる.
1 2 3 4 5 6 7 8 9 10 |
|
練習問題 2.2 逆変換法を用いてロジスティック分布とコーシー分布の乱数を生成する
逆変換法を用いてロジスティック分布とコーシー分布の乱数を生成する.変換で求まる関数はいわゆる逆累積分布関数というもの.
a.ロジスティック分布
を変形して,
以下のコードは,の場合.
1 2 3 4 5 6 7 8 9 |
|
b.コーシー分布
を変形して,
以下のコードは,の場合.
1 2 3 4 5 6 7 8 9 |
|
練習問題 2.12 指数分布からガンマ分布とベータ分布の乱数を生成する
a.ガンマ乱数
以下の作図では,の値を固定しての値を1,2,5,9と変化させたときの分布の変化を見ている.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
a.ベータ乱数
この手法では, という制約があるため,,のようなベータ分布は作ることが出来ない.以下はa=1,b=1,a=2,b=3,a=8,b=4の場合.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
b. 一様分布から指数乱数を作る(逆変換)
より
c. 一様分布からロジスティック乱数を作る(逆変換)
より