【目次】
•ベルヌーイ分布に従う乱数を発生させる方法。
•離散型一様分布に従う乱数を発生させる方法。
ベルヌーイ分布に従う乱数を発生させる方法。
正規分布や二項分布に従う乱数を発生させたいときはrnorm()とrbinom()いった関数を利用することができますが、Rではベルヌーイ分布や離散型一様分布から乱数を発生する関数がありません。
ではどうするかというと、sample()関数を利用します。
例えば、p=0.8のベルヌーイ分布から20個の乱数を発生させたい場合は、以下のようにプログラミングをします。
# ベルヌーイ分布(p=0.8) X=sample(x=c(1,0),# Xの取り得る値を指定 size=20, #いくつの乱数を発生させるか? replace = T, # 復元抽出を指定 prob=c(0.8,0.2) # 各値を取り得る確率。 )
すると以下のように1又は0の20個の乱数を発生させることができました。
[1] 1 1 0 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1
sum()関数を利用して1が何回でたか数えてみると
[1] 16
今回は16個が1で4個が0なので、たまたまですが、丁度0.8の割合で1が得られましたね。
離散型一様分布に従う乱数を発生させる方法。
次に離散型一様分布に従う乱数を発生させる方法です。
歪んでいないサイコロを振ってでる目をYとすると、Yは{1,2,3,4,5,6}の値をそれぞれ1/6の確率でとる離散型一様分布に従いますね。
この分布からRのsample()関数を利用して30個の乱数を発生させるには、以下のようになります。
Y=sample(x=c(1,2,3,4,5,6),# Yの取り得る値を指定 size=30, #いくつの乱数を発生させるか? replace = T # 復元抽出を指定 # すべて同じ確率であればprobは指定しなくてよい。 )
以下のようにUniform{1,6}から30個の乱数を発生させることができました。
[1] 6 5 3 2 6 2 6 3 1 4 1 3 6 3 6 6 3 3 4 4 6 4 6 1 3 6 5 2 5 3
またtable()関数を利用してそれぞれの目が何回出たか数えることができます。
Y
1 2 3 4 5 6
3 3 8 4 3 9
6の目が9回も出ており、若干偏ったサイコロにも見えますが、このサイコロが偏っているかどうかはカイ二乗分布を利用した検定で統計学的に結論づけることができます。