2018年1月4日木曜日

[Python] 二項分布

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というファイルで見ることができます.

0 件のコメント :

コメントを投稿