乱数生成器とハッカースタッツ

Pythonで学ぶ統計的思考(パート1)

Justin Bois

Teaching Professor at the California Institute of Technology

ハッカースタッツ

  • 繰り返しの擬似実験で確率を推定する手法
Pythonで学ぶ統計的思考(パート1)

  ch3-2.004.png

1 画像: 作者不詳
Pythonで学ぶ統計的思考(パート1)

ch3-2.005.png

1 画像: Heritage Auction
Pythonで学ぶ統計的思考(パート1)

コイントスのシミュレーション

ch3-2.010.png

Pythonで学ぶ統計的思考(パート1)

ベルヌーイ試行

  • 選択肢が2つの実験。「成功」(True) と「失敗」(False)
Pythonで学ぶ統計的思考(パート1)

np.random モジュール

import numpy as np
rng = np.random.default_rng()

rng
Generator(PCG64) at 0x7F9433D38120
Pythonで学ぶ統計的思考(パート1)

乱数シード

  • 乱数生成アルゴリズムに与える整数
  • 再現性が必要なときだけシードを手動設定
  • 指定方法: rng = np.random.default_rng(seed)
Pythonで学ぶ統計的思考(パート1)

コイントス4回のシミュレーション

rng = np.random.default_rng(42)

random_numbers = rng.random(size=4)
random_numbers
array([0.77395605, 0.43887844, 0.85859792, 0.69736803])
heads = random_numbers < 0.5
heads
array([False,  True, False, False])
np.sum(heads)
1
Pythonで学ぶ統計的思考(パート1)

コイントス4回のシミュレーション

n_all_heads = 0  # 4回すべて表の回数を初期化
for _ in range(10000):
     heads = np.random.random(size=4) < 0.5
     n_heads = np.sum(heads)
     if n_heads == 4:
         n_all_heads += 1

n_all_heads / 10000
0.0607
Pythonで学ぶ統計的思考(パート1)

ハッカースタッツで確率を出す

  • どうデータをシミュレートするか決める
  • とても多く繰り返しシミュレート
  • 確率 ≒ 関心の事象が起きた試行の割合
Pythonで学ぶ統計的思考(パート1)

Let's practice!

Pythonで学ぶ統計的思考(パート1)

Preparing Video For Download...