二項分布とポアソン分布の関係
ポアソン分布は、まれな事象に対する二項分布の極限であると学びました。これはストーリーで考えると納得しやすいです。たとえば、1時間のあいだ毎分ベルヌーイ試行を行い、それぞれの成功確率が 0.1 だとします。試行回数は 60 回で、成功回数は二項分布に従い、期待される成功回数はおよそ 6 回です。これは動画で扱ったポアソンのストーリー、つまりウェブサイトの1時間あたり平均 6 回のヒットと同じ状況です。したがって、到着率が \(np\) のポアソン分布は、成功確率が \(p\) のベルヌーイ試行を \(n\) 回行った二項分布を近似します(\(n\) が大きく、\(p\) が小さい場合)。重要なのは、ポアソン分布は二項分布と異なりパラメータが1つだけなので、扱いやすいことが多いという点です。
ここでは、この2つの分布を計算機で確かめます。まず、到着率 10 のポアソン分布からサンプルを取り、その平均と標準偏差を計算します。次に、\(np = 10\) となるようにパラメータ \(n\) と \(p\) を選んだ二項分布からサンプルを取り、その平均と標準偏差を計算します。
この演習はコースの一部です
Pythonで学ぶ統計的思考(パート1)
演習の手順
rng.poisson()関数を使って、平均が10のポアソン分布から10000個のサンプルを生成します。- 二項分布で考える
nとpの値のリストを作成します。\(np\) が常に 10 になるように、n = [20, 100, 1000]、p = [0.5, 0.1, 0.01]を選びます。 - 用意された
forループの中でrng.binomial()を使い、各n, pの組み合わせごとに二項分布から10000個のサンプルを生成し、サンプルの平均と標準偏差を出力してください。n, pの組み合わせは 3 つ(20, 0.5、100, 0.1、1000, 0.01)で、ループ内ではn[i], p[i]として参照できます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Draw 10,000 samples out of Poisson distribution: samples_poisson
# Print the mean and standard deviation
print('Poisson: ', np.mean(samples_poisson),
np.std(samples_poisson))
# Specify values of n and p to consider for Binomial: n, p
# Draw 10,000 samples for each n,p pair: samples_binomial
for i in range(3):
samples_binomial = ____
# Print results
print('n =', n[i], 'Binom:', np.mean(samples_binomial),
np.std(samples_binomial))