二項分布を誰でも理解できるようにわかりやすく解説

二項分布は離散確率分布の代表的なものの一つで、「試行回数 n と成功率 p が明らかなときの、成功回数 k の分布」のことです。試行回数と成功率という二つのパラメータさえあれば良いので、使う機会が非常に多い確率分布です。

その使用頻度の多さから、ベイズ統計においても、ベータ分布と並んで真っ先に学ぶものです。当ページでは、この二項分布について知っておくべきことを、誰でもわかるように解説していきます。具体的には、以下のようなことを身につけることができます。

  • 二項分布とは何か?どのような分析が可能になるのか?:まずは、二項分布がどのような確率分布であるのか、主にその確率質量関数について解説します。そして、二項分布の代表的な分析指標である期待値(平均値)と分散の公式について解説します。
  • 二項分布と正規分布の関係がわかる:二項分布がある条件を満たすときは、正規分布とほとんど全く同じように使うことができます。そのための条件を解説します。
  • 二項分布の例題を解くことで、実践的な活用方法がわかる:最後に、二項分布の代表的な練習問題を 2 つ用意しています。これを解くことで、当ページで学んだ内容を実践で活用するための練習となります。実際に問題を解くことは、理解を定着させるために必須のステップなので、ぜひチャレンジしてください。

なお、ベイズ統計学において、二項分布と対になる存在であるベータ分布については『ベータ分布とは?誰でも必ず理解できるようにわかりやすく解説』で解説していますので、ぜひ合わせてご確認ください。

それでは始めましょう。

目次

1. 二項分布とは

二項分布は、試行回数 \(n\) と成功率 \(p\) という 2 つのパラメータがあるときに成功回数の確率を表す確率分布です。

たとえばバスケットボールのフリースローを考えてみてください。フリースロー成功率が 70% の選手が 10 回フリースローを行ったとしたら、成功数の分布は下図の通りになります。

この確率分布を見たら、この選手がフリースローを 10 本全部決める確率は大体 3% ほどで、5 回しか決められない確率は 10% あるなど、成功回数について様々なことがわかります。

二項分布のグラフ

成功率が 0.1 から 0.9 の場合を並べると下図のようになります。

ご覧の通り、\(p < 0.5\) のときは右肩下がりに、\(p = 0.5\) のときは正規分布に近似し、\(p > 0.5\) のときは右肩上がりになります。

以上が二項分布です。これは試行回数 \(n\) と成功率 \(p\) の 2 つのパラメータさえあれば求められる、非常に便利な確率分布です。

2. 二項分布の確率質量関数

二項分布の確率質量関数は以下の通りです。

二項分布の確率質量関数

\[
{\rm Bin}(k|n,p)
=
\dbinom{n}{k} \ p^k(1-p)^{n-k}
\]

※ \(k\) : 成功数(確率変数), \(n\) : 試行回数, \(p\) : 成功率, \(\binom{n}{k}\) : 二項係数 \({}_nC_{k}\) と等しい 

\(\binom{n}{k}\) の部分は「二項係数」と言います。これは組み合わせ論の \({}_nC_k\) とまったく同じものです。組み合わせについては、「組み合わせとは?知っておくべき 2 つの公式」で解説していますので、ぜひご確認ください。\(p^k(1-p)^{n-k}\) の部分はベルヌーイ分布と非常に似通っています。

二項分布の確率質量関数の導出

なぜ、この確率質量関数で二項分布を描くことができるのでしょうか。これについては以下のボックス内で解説していますので、興味のある方はご覧ください。

二項分布の確率質量関数の導出を見る

簡単な例としてコインを 3 回投げるという試行を考えてみましょう。コイン投げは、結果が表(成功)か裏(失敗)かの 2 つしかありません。そして、ここではたまたまコインが少し歪んでおり、成功率が \(p=0.6\) になっていたとします。そのため裏が出る確率(失敗率)は必然的に \(1-0.6\) になります。

それでは、このコインを 3 回投げて表が 0 回から 3 回出る場合(成功数 \(k = 0 \ – \ 3\) の場合)の確率を、それぞれ求めていきましょう。

成功数が 0 回(\(k=0\))の確率

それでは、まずは成功数が 0 回(\(k=0\))の場合の確率を考えてみましょう。コインを 3 回投げて表が 0 回のパターンは {裏裏裏} の一つだけです。これは \({}_3C_0=1\) で求めることもできます。そして、このパターンが出る確率は以下の通り求められます。

  • \(P(\{\)裏裏裏\(\})=(1-0.6)^3=0.064\)

成功数が 1 回の確率

次に、成功数が 1 回 (\(k=1\)) の場合はどうでしょうか。コインを 3 回投げて表が 1 回出る組み合わせのパターン数は、{表裏裏}, {裏表裏}, {裏裏表} の 3 つあります。これは \({}_3C_1=3\) と計算することもできます。そして、この 3 つそれぞれが出現する確率は、以下の通りになります。

  • \(P(\{\)表裏裏\(\})=0.6 \times (1-0.6)^2=0.096\)
  • \(P(\{\)裏表裏\(\})=(1-0.6) \times 0.6 \times (1-0.6)=0.096\)
  • \(P(\{\)裏裏表\(\})=(1-0.6)^2 \times 0.6=0.096\)

以上のことから、コインを 3 回投げて表が 1 回出る確率は、\(3 \times 0.096=0.288\) になります。

成功数が 2 回の確率

続いて、成功数が 2 回 (\(k=2\)) の場合はどうでしょうか。コインを 3 回投げて表が 2 回出るパターンは、{表表裏}, {表裏表}, {裏表表} の 3 つあります(\( {}_3C_2=3\) )。それぞれが出現する確率は、以下の通りになります。

  • \(P(\{\)表表裏\(\})=0.6^2 \times (1-0.6)=0.144\)
  • \(P(\{\)裏表裏\(\})=0.6 \times (1-0.6) \times 0.6=0.144\)
  • \(P(\{\)裏表表\(\})=(1-0.6) \times 0.6^2=0.144\)

以上のことから、コインを 3 回投げて表が 1 回出る確率は、\(3 \times 0.144=0.432\) になります。

成功数が 3 回の確率

最後に、成功数が 3 回 (\(k=3\)) の場合はどうでしょうか。まず、コインを 3 回投げて表が 3 回出るパターンは {表表表} の 1 つだけです(\( {}_3C_3=1\) )。そのため確率は以下の通りになります。

  • \(P(\{\)表表表\(\})=0.6^3=0.216\)

成功数を \(k\) 回として一般化

さて、ここまでを振り返って観察してみれば、成功数 \(k\) と置くと、確率は一貫して、以下の計算で求められていることがわかります。

以上が二項分布の確率質量関数の導出です。

3. 二項分布の期待値(平均)

二項分布の期待値は以下の公式で求められます。

二項分布の期待値

\[\begin{eqnarray}
E(X)=np
\end{eqnarray}\]

※ \(n\) : 試行回数, \(p\) : 成功率

期待値は、その試行を繰り返し何度も行ったときに最終的に収束していく先の値です。例えば、試行回数 \(n =5\) 、成功率 \(p = 0.5\) の試行の期待値は \(np=5 \cdot 0.5 = 2.5\) です。これは、この試行を繰り返し行うと、最終的に \(k = 2.5\) に近づいていくということを意味します。

二項分布の期待値の導出

二項分布の期待値の導出方法については、以下のボックス内で示していますので、ご興味のある方はクリックしてご覧ください。

二項分布の期待値の導出を見る

\[
\begin{eqnarray}E(X)
&=&
\sum_{k=0}^{n}kP(X=k)\\
&=&
\sum_{k=0}^{n}k\dbinom{n}{k} p^{k}{(1-p)}^{n-k}\\
&=&
\sum_{k=0}^{n}k\ n C_k p^{k}{(1-p)}^{n-k}\\
&=&
\sum_{k=0}^{n}k\frac{n!}{{(n-k)}!k!}p^{k}{(1-p)}^{n-k}\\
&=&
\sum_{k=0}^{n}\frac{n {(n-1)}!}{{(n-k)}!{(k-1)}!}p p^{k-1}{(1-p)}^{n-k}\\
&=&
np\sum_{k=0}^{n}\frac{{(n-1)}!}{{((n-1)-(k-1))}!{(k-1)}!}p^{k-1}{(1-p)}^{n-k}\\ &=&
np\end{eqnarray}
\]

4. 二項分布の分散

二項分布の分散は以下の公式で求められます。

二項分布の分散

\[\rm{Var}(X)=np(1-p)\]

※ \(n\) : 試行回数, \(p\) : 成功率

分散は、分布の横への広がり具合を示します。たとえば \(p = 0.5\) で \(n\) を増やしていくと、下図のように分散は大きくなり、最大値は小さくなっていくことがわかります。

二項分布の分散の導出

二項分布の分散の導出方法については、以下のボックス内で示していますので、ご興味のある方はクリックしてご覧ください。

二項分布の分散の導出を見る

\[
\begin{eqnarray}
E(X^2)
&=&
\sum_{k=0}^{n}k^2P(X=k)\\
&=&
\sum_{k=0}^{n}k^2 \dbinom{n}{k} p^{k}{(1-p)}^{n-k}\\ &=&
\sum_{k=0}^{n}k^2\ n C_k p^{k}{(1-p)}^{n-k}\\
&=&
\sum_{k=0}^{n}(k(k-1)+k)\frac{n!}{{(n-k)}!k!}p^{k}{(1-p)}^{n-k}\\
&=&
\sum_{k=0}^{n}k(k-1)\frac{n!}{{(n-k)}!k!}p^{k}{(1-p)}^{n-k}+\sum_{k=0}^{n}k\frac{n!}{{(n-k)}!k!}p^{k}{(1-p)}^{n-k}\\
&=&
\sum_{k=0}^{n}\frac{n!}{{(n-k)}!(k-2)!}p^{k}{(1-p)}^{n-k}+np\\
&=&
\sum_{k=0}^{n}\frac{n(n-1)(n-2)!}{{(n-k)}!(k-2)!}p^2p^{k-2}{(1-p)}^{n-k}+np\\
&=&
n(n-1)p^2\sum_{k=0}^{n}\frac{(n-2)!}{{((n-2)-(k-2))}!(k-2)!}p^{k-2}{(1-p)}^{n-k}+np\\
&=&
n(n-1)p^2+np\\
V(X)
&=&
E(X^2)-{(E(X))}^2\\
&=&
n(n-1)p^2+np-{(np)}^2\\
&=&
np(1-p)
\end{eqnarray}
\]

5. 二項分布と正規分布の近似

期待値と分散を使うと、二項分布と正規分布の関係も理解することができます。その関係とは、二項分布は、期待値 \(np\) と分散 \(np(1-p)\) が \(5\) よりも大きい場合に、正規分布と非常に近似するという点です。

極端な例ですが、条件を満たさない例と満たす例を、下図に示しています。

このように、\(n\) が十分に大きく、期待値も分散も十分に大きい場合、二項分布は、正規分布 \(\rm{N}(np. np(1-p))\) に近似することになります。

6. 二項分布の例題

それでは二項分布の使い方に関して理解を深めるために、次の問題に挑戦してみてください。

6.1. 当選率


選挙の当選率は?

あなたは選挙の立候補者 A の右腕として補佐をしています。今、選挙は最終局面にあり、残りの 50 票中 30 票を取り込むことができると A は当選するというところまで来ました。ここまでの世論調査では、A さんの投票者の間での支持率は 60% であることがわかっています。さて、A さんが当選する確率はどれぐらいと考えられるでしょうか。


この問題は次のように考えます。

  • 試行回数 \(n=50\)
  • 成功率 \(p=0.6\)

これらのパラメータを二項分布の確率質量関数に入れて、Python で計算すると以下の通りになります。

In [1]:
from scipy.stats import binom
for i in range(0,51):
        print("k=", i, " : ", binom.pmf(i, 50, 0.6))
k= 0  :  1.2676506002282335e-20
k= 1  :  9.50737950171185e-19
k= 2  :  3.4939619668790476e-17
k= 3  :  8.385508720509562e-16
k= 4  :  1.4779459119898468e-14
k= 5  :  2.039565358545913e-13
k= 6  :  2.2945110283642452e-12
k= 7  :  2.1633961124577002e-11
k= 8  :  1.7442381156690525e-10
k= 9  :  1.2209666809683175e-09
k= 10  :  7.508945087955066e-09
k= 11  :  4.095788229793711e-08
k= 12  :  1.9966967620244104e-07
k= 13  :  8.754747341184262e-07
k= 14  :  3.4706319816836265e-06
k= 15  :  1.2494275134061251e-05
k= 16  :  4.099684028363863e-05
k= 17  :  0.0001229905208509121
k= 18  :  0.0003382239323400173
k= 19  :  0.0008544604606484677
k= 20  :  0.0019866205710076714
k= 21  :  0.004257044080730764
k= 22  :  0.008417337159626555
k= 23  :  0.015370789595840092
k= 24  :  0.02593820744297978
k= 25  :  0.04046360361104869
k= 26  :  0.05836096674670484
k= 27  :  0.07781462232894026
k= 28  :  0.09587873108387085
k= 29  :  0.10910338364716637
k= 30  :  0.11455855282952349
k= 31  :  0.1108631156414745
k= 32  :  0.09873746236818827
k= 33  :  0.08078519648306116
k= 34  :  0.06058889736229755
k= 35  :  0.04154667247700375
k= 36  :  0.025966670298127086
k= 37  :  0.01473783989893752
k= 38  :  0.007562838895507189
k= 39  :  0.0034905410286956567
k= 40  :  0.001439848174336943
k= 41  :  0.0005267737223183981
k= 42  :  0.00016932012503091584
k= 43  :  4.725212791560384e-05
k= 44  :  1.1276075979860118e-05
k= 45  :  2.2552151959719332e-06
k= 46  :  3.6769812977804506e-07
k= 47  :  4.6940186780174746e-08
k= 48  :  4.400642510641471e-09
k= 49  :  2.6942709248825553e-10
k= 50  :  8.082812774647628e-12

これをグラフに描いたものが下図です。

以上のデータから、当選する確率(得票数が 30 以上になる確率)は、対応するそれぞれの棒グラフ(上の表の k=30 以上)を足せば求められるので以下の通りになります。

In [3]:
sum = 0
for i in np.arange(30, 51):
    sum += height[i]
sum
Out[6]:
0.5610349320400627

このように、たとえ期待値は \(np=50 \cdot 0.6=30\) で当選できそうだと示しているとしても、現状では、正しい当選率は約 56% に過ぎないということがわかります。この数値では、まだ枕を高くして眠ることはできないので、更なる選挙対策をした方が良いと判断できるでしょう。

6.2. 内定率

2 社以上から内定をもらえる確率は?

新しい仕事を探していて、いくつかの本命の会社があるときは、既に複数の内定を貰っていて、それを交渉材料にして本命に挑むのが良い戦略です。さて、X さんは今月、本命の会社のための前哨戦として、1 ヶ月で 7 社の面接を受けることになっています。そして転職エージェントの見積もりでは、X さんは大体 0.2 の確率で内定を貰える素材であると太鼓判をおされています。

今月、X さんが 2 社以上から内定をもらえる確率はどれぐらいあるでしょうか。

この問題は、以下のパラメータをもつ二項分布の問題です。

  • 試行回数 \(n=7\)
  • 成功率 \(p=0.2\)

これらのパラメータを二項分布の確率質量関数で計算すると以下の通りになります。

In [1]:
from scipy.stats import binom
for i in range(0,8):
        print("k=", i, " : ", binom.pmf(i, 7, 0.2))
k= 0  :  0.20971519999999993
k= 1  :  0.36700160000000004
k= 2  :  0.27525120000000014
k= 3  :  0.11468800000000005
k= 4  :  0.028672000000000024
k= 5  :  0.004300800000000003
k= 6  :  0.0003584000000000004
k= 7  :  1.28e-05

これを図に描いたものが以下です。X さんが内定を貰う確率は、この二項分布に従います。

X さんが今月 2 社以上から内定を貰える確率は、これの \(K= 2\) 以上を足したものになので、約 42.3% ということになります。なお X さんが内定を 1 社からも貰えない確率は、約 21.0% もあります。

7. 二項分布のまとめ

最後に内容をまとめておきます。

二項分布とは

「試行回数 n と成功率 p が明らかなときの、成功回数 k の分布」のことです。以下の確率質量関数で求められます。

\[
\rm{Bin}(n,p)
=
\dbinom{n}{k} \ p^k(1-p)^{n-k}
\]

※ \(k\) : 成功数(確率変数), \(n\) : 試行回数, \(p\) : 成功率, \(\binom{n}{k}\) : 二項係数 \({}_nC_{k}\), 

二項分布の期待値と分散

二項分布でよく使う分析指標だる期待値と分散は以下の公式で求めることができます。

\[E(X)=np\]

\[\rm{Var}(X)=np(1-p)\]

二項分布と正規分布の近似

二項分布の期待値と分散がともに 5 よりも大きい場合、その二項分布は正規分布に近似します。

以上、最後までご覧頂きありがとうございました。

当ページが、あなたにとって学習の役に立ったとしたら、幸いです。もし、役に立ったと感じたら、SNS 上でシェアして頂ければ嬉しく思います。また、コメントも頂けるとモチベーションが上がります(コメント返信は余裕ができれば行いたいと考えています)。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる