Sponsored Links
二項分布とは、ベルヌーイ試行という試行についてみられる確率分布のことだそうです。
ベルヌーイ試行とは何かというと、「ある現象についてAかBのどちらかが起こる」といった現象のことを言うそうです。
つまりどういうことかというと「コイン投げで表と裏どっちが出るか」といったようなことを指します。
二項分布の確率密度関数は
$$f(x)={ { _{ n } }{ C }_{ x } }p^{ x }{(1-p)}^{n-x}$$
と記述されます。
ここで、p=ある事象が起こる確率,n=試行回数,x=確率変数、です。
Pythonでプロットしてみる
任意の回数だけベルヌーイ試行をしたときの二項分布をプロットするコードは次のように書けました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # Jupyterでグラフをインライン表示するのに必要 %matplotlib inline from scipy.misc import comb # comb()は組み合わせを計算する関数 import pandas as pd # Series用。 import matplotlib.pyplot as plt # グラフのプロット用 import numpy as np # arange()用 import pylab # グラフサイズ変更するのに必要 n=100 # 試行回数 p=0.9 # ある事象が起こる確率 # ------------------------------------------------------------ # n回までベルヌーイ試行を繰り返してその確率を計算して、Seriesを作成する。 # ------------------------------------------------------------ # ポイント : 正しく計算するために変数nはfloatにキャストして使う。 # **は累乗 # 試行の計算は内包表記。書式⇒処理 for 変数 in リスト xList=pd.Series( [comb(float(n), x)*p**x*(1-p)**(float(n)-x) for x in range(0, n+1)]) # ------------------------------ # 計算結果をグラフとしてプロットする。 # ------------------------------ pylab.figure(figsize=(10,4)) # グラフのサイズを変更。 plt.bar(xList.index,xList) # 棒グラフをプロット。引数にはX軸の値とY軸の値を指定。 plt.xlim(0,100) # X軸の値の範囲を設定。 plt.xticks(np.arange(0,n+1,10)) # X軸の目盛りを1から100まで10刻みに指定。 |
実行するとこんな感じのグラフがプロットされます。
このグラフは、90%の確率で”ある事象”が起こるような試行を100回実行したとき、試行全体で”ある事象”が90回起こるような確率は12%程度あって、100回中100回起こるようなことや、100回中0回~70回程度起こるようなことはまずあり得ないということを表しています。
具体的な例で言えば、90%の確率で成功する手術を100回やったとき、85回~95回くらい成功するのは普通だろうと考えられるけれど、100回やって10回とかしか成功しないようなことはまずあり得ないということになります。
Sponsored Links
懐かしい。
卒研で似た勉強したのが遠い昔。
時間はあっという間に過ぎていくね。気が付いたら死んでそう! XD