あまり知られていない事実かもしれませんが、Rで乱数を発生させる関数のパラメータはベクトル化されています。つまり、正規分布から3000個の乱数を作る時、1000個ごとに期待値を0、1、2と変えるようなことが簡単にできます。覚えておくとシミュレーションで乱数が必要な時に、関数呼び出しを一度に纏められて便利&高速です。
random_number <- rnorm(3000, mean = rep(c(0, 1, 2), each = 1000), sd = 1)
colMeans(matrix(
random_number,
ncol = 3
))
## [1] 0.0008321393 1.0307477089 2.0387482607
ネ?
もちろん、二項分布やポアソン分布でもそんなことができます。今度は二項分布の期待値が0, 1, 2な3パターンを生成してみます。二項分布の期待値は size * prob
なので、この値が0, 1, 2になれば、size, probは任意です。というわけで、
- size: 1, 2, 20
- prob: 0, 0.5, 0.1
- size * prob: 0, 1, 2
となるようにしてみましょう。
random_number <- rbinom(
3000,
size = rep(c(1, 2, 20), each = 1000),
prob = rep(c(0, 0.5, 0.1), each = 1000)
)
colMeans(matrix(
random_number,
ncol = 3
))
## [1] 0.000 1.006 2.033
ネ?