No.027 統計学のお勉強 二項分布

1.今回の目的

統計学を勉強中です。ちなみに私は文系出身で数学はさっぱりなので、いろいろなサイトの説明を参考に頑張って学んでおります。

今回は二項分布について

2.Reference

こちらのサイトを参考にしました。
【Python】二項分布の作図 - からっぽのしょこ (anarchive-beta.com)

3.二項分布とは

二項分布: Binomial distribution)

コインの裏表のように2者択一の試行を複数回行ったときにx回成功する確率の分布を二項分布と言います。
サイコロをふって1の目が出た場合に成功(2-6は失敗)とする試行をx回繰り返したときに k回成功する確率を計算します。この場合サイコロに細工がなければ  1がでる確率(P(X=1) = 1/6)  それ以外の目がでる確率(P(X0) = (1-Pで5/6)となります。

確率変数f(x)を求める式は
$$_nC_xp^x(1-p)^{x-1}$$

確率変数 X の平均は np
分散は npq = np(1 − p) である。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from fractions import Fraction
from scipy import stats

# 確率(今回サイコロを想定)
phi=1/6#1が成功、そのほかは失敗
q = 1-phi
n = 10
k = range(n+1)
x = np.arange(n+1)
y = stats.binom.pmf(n=n,k=x, p=phi)

# それぞれの統計量
x_stats = stats.geom.stats(p=p, loc=0, moments='mv')

# 公式からの導出
mean = n*phi
var = n*phi*q
stddev =np.sqrt(var)
print(f'公式で計算\n Mean: {mean}, Variance: {var:.2f}, StdDev: {stddev:.2f}')

# 二項分布を作図
plt.figure(figsize=(4, 4)) # 図の設定
plt.bar(x, y, color='#00A968') # 棒グラフ
plt.vlines(x=mean, ymin=0.0, ymax=np.max(y), color='orange', linestyle='--', label='$E[x]$') # 平均 #plt .vlines(x=mean - var, ymin=0.0, ymax=np.max(y), color='red', linestyle=':', label='$E[x] - {V[x]}') # 平均 - 分散 #plt .vlines(x=mean + var, ymin=0.0, ymax=np.max(y), color='red', linestyle=':', label='$E[x] + {V[x]}') # 平均 + 分散
plt.vlines(x=mean - stddev, ymin=0.0, ymax=np.max(y), color='blue', linestyle=':', label='$E[x] - \sqrt{V[x]}$') # 平均 - 標準偏差
plt.vlines(x=mean + stddev, ymin=0.0, ymax=np.max(y), color='blue', linestyle=':', label='$E[x] + \sqrt{V[x]}$') # 平均 + 標準偏差

plt.xlabel('成功回数') # x軸ラベル
plt.ylabel('成功確率') # y軸ラベル
plt.suptitle('Binomial Distribution(二項分布)', fontsize=10) # 図タイトル
plt.title('$\phi=' + str(phi) + '$'+f'  n={n}', loc='left') # タイトル

plt.show() # 描画

以上です。

この記事が気に入ったらサポートをしてみませんか?