PISA「盗難事件」問題のシミュレーション

有名なPISA「盗難事件」問題についてPythonでシミュレーションしてみよう。

全部で1024件の盗難事件が1998年・1999年の2年間に起こった場合,どちらの年も盗難の起きやすさは同じと仮定して(帰無仮説),両者の件数が8件以上異なる確率(p 値)をシミュレーションで求める。

1998年を 0,1999年を 1 として,全部で1024件の事件を作るには,次のようにする。

import numpy as np

rng = np.random.default_rng()
a = rng.integers(0, 2, size=1024)

両年の件数の差は 2 * abs(sum(a) - 512) である。これが8以上なら True,8未満なら False を返す関数を作ってみる。

def f():
    a = rng.integers(0, 2, size=1024)
    return 2 * abs(sum(a) - 512) >= 8

これの返す値を要素とする長さ10000の配列を作り,True の割合を調べる。

b = [f() for _ in range(10000)]
sum(b) / 10000

この値を p 値という。


Last modified: