疑似乱数の生成

Rで学ぶサンプリング

Richie Cotton

Data Evangelist at DataCamp

random の意味は?

意図や方法によらず、{adjective} に作られ・起こり・選ばれること。

  • Oxford Languages
Rで学ぶサンプリング

真の乱数

  • 硬貨投げなど、物理過程から生成。
  • Hotbits は放射性崩壊を利用。
  • RANDOM.ORG は大気雑音を利用。
    • R では random パッケージから利用可。
  • 真の乱数は高コスト。
1 https://www.fourmilab.ch/hotbits 2 https://www.random.org
Rで学ぶサンプリング

疑似乱数の生成

  • 次の「乱数」は直前の「乱数」から計算。
  • 最初の「乱数」はシードから計算。
  • 同じシードなら、以降の乱数列は同一。
seed <- 1
calc_next_random(seed)
3
calc_next_random(3)
2
calc_next_random(2)
6
Rで学ぶサンプリング

乱数生成関数

function distribution function distribution function distribution
rbeta ベータ rgeom 幾何 rsignrank ウィルコクソン符号付順位
rbinom 二項 rhyper 超幾何 rt t
rcauchy コーシー rlnorm 対数正規 runif 一様
rchisq カイ二乗 rlogis ロジスティック rweibull ワイブル
rexp 指数 rnbinom 負の二項 rwilcox ウィルコクソン順位和
rf F rnorm 正規
rgamma ガンマ rpois ポアソン
Rで学ぶサンプリング

乱数の可視化

rbeta(5000, shape1 = 2, shape2 = 2)
[1] 0.2788 0.7495 0.6485 0.6665 0.6546 0.1575
...

[4996] 0.84719 0.35177 0.92796 0.67603 0.53960
randoms <- data.frame(
  beta = rbeta(5000, shape1 = 2, shape2 = 2)
)
ggplot(randoms, aes(beta)) +
  geom_histogram(binwidth = 0.1)

ベータ分布のヒストグラム

Rで学ぶサンプリング

乱数のシード

set.seed(20000229)
rnorm(5)
-1.6538 -0.4028 -0.1654 -0.0734  0.5171
rnorm(5)
1.908  0.379 -1.499  1.625  0.693
set.seed(20000229)
rnorm(5)
-1.6538 -0.4028 -0.1654 -0.0734  0.5171
rnorm(5)
1.908  0.379 -1.499  1.625  0.693
Rで学ぶサンプリング

異なるシードを使う

set.seed(20000229)
rnorm(5)
-1.6538 -0.4028 -0.1654 -0.0734  0.5171
rnorm(5)
1.908  0.379 -1.499  1.625  0.693
set.seed(20041004)
rnorm(5)
-0.6547 -0.7854 -0.0152  0.1514  0.5285
rnorm(5)
0.748  0.974  0.174 -0.781 -0.930
Rで学ぶサンプリング

練習しましょう!

Rで学ぶサンプリング

Preparing Video For Download...