二項分布

Pythonで二項分布のグラぷをプロットすることを考えてみます.
二項分布の確率質量関数は

 \mathrm{Bin}(m | M, \mu) = {}_M C_m \mu^{m} (1 - \mu)^{M - m}

となるので,以下のように実装してみます.

xlist = pd.Series([comb(float(M), x) * mu ** x * (1 - mu) ** (float(M) - x)\
    for x in range(0, mu+1)])
 

グラフにプロットするに,以下のようなコードとして,Jupyter Notebookでプロット結果を確認しました.

from scipy.special import comb      # function to calculate combinations
import numpy as np
import pandas as pd                 # for Series
import matplotlib.pyplot as plt     # for plotting graph
import pylab                        # for change graph size
 
 
M = 50      # number of trials
mu = 0.5    # the probability of an event occurring
 
xlist = pd.Series([comb(float(M), x) * mu ** x * (1 - mu) ** (float(M) - x)\
    for x in range(0, mu+1)])
 
pylab.figure(figsize = (10, 5))     # specify graph size
plt.bar(xlist.index, xlist)
plt.xlim(0, 50)                     # set the range of X axis values

 

plt.xticks(np.arange(0, n+1, 10))   # specify the scale of the X axis in 10 steps
 
 
なお,上記の例のJupyter Notebookファイルは,GitHubBinomial distribution.ipynbというファイルで見ることができます.