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) である。
![](https://assets.st-note.com/img/1663824419777-cYX7QRUNx4.png)
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() # 描画
以上です。
この記事が気に入ったらサポートをしてみませんか?