【確率論】確率分布まとめ
Poisson分布
定義
導出
Poisson分布は二項分布の にして定義されている.
二項分布
期待値
分散
を利用する.
図
import numpy as np import matplotlib.pyplot as plt import scipy.stats as stats from IPython.core.pylabtools import figsize figsize(12.5, 4) poi = stats.poisson # Poisson分布 lambda_ = [1.5, 5.5, 12] # Poisson分布のパラメタ(強度λ) colors = ["#348ABD", "#A60628", "#66FFB2"] a = np.arange(16) # [0, 1, 2, ..., 15] # poi.pmf(a, λ)でPoisson分布の値を得る plt.bar(a, poi.pmf(a, lambda_[0]), color=colors[0], label="$\lambda = %.1f$"%lambda_[0], alpha=0.6, edgecolor=colors[0], lw=1) plt.bar(a, poi.pmf(a, lambda_[1]), color=colors[1], label="$\lambda = %.1f$"%lambda_[1], alpha=0.6, edgecolor=colors[1], lw=1) plt.bar(a, poi.pmf(a, lambda_[2]), color=colors[2], label="$\lambda = %.1f$"%lambda_[2], alpha=0.6, edgecolor=colors[2], lw=1) plt.legend() plt.ylabel("Probability of $k$") #kの確率 plt.xlabel("$k$")
幾何分布
定義
意味
ベルヌーイ試行で初めて成功するまでの試行回数の確率
期待値
分散
図
scipy.stats.geomではで定義されているため, は定義なし.
成功確率が高いときは大きい試行回数の値で確率が小さくなり, 反対に成功確率が小さいときは大きい試行回数でも確率が比較的に小さくならない.
import numpy as np import matplotlib.pyplot as plt import scipy.stats as stats from IPython.core.pylabtools import figsize figsize(12.5, 4) geo = stats.geom # Geometric分布 p = [0.1, 0.5, 0.9] # Geometric分布のパラメタ(確率p) colors = ["#348ABD", "#A60628", "#66FFB2"] k = np.arange(16) # [0, 1, 2, ..., 15] # geo.pmf(k,p)でGeometric分布の値を得る plt.bar(k, geo.pmf(k, p[0]), color=colors[0], label="$p = %.1f$"%p[0], alpha=0.6, edgecolor=colors[0], lw=1) plt.bar(k, geo.pmf(k, p[1]), color=colors[1], label="$p = %.1f$"%p[1], alpha=0.6, edgecolor=colors[1], lw=1) plt.bar(k, geo.pmf(k, p[2]), color=colors[2], label="$p = %.1f$"%p[2], alpha=0.6, edgecolor=colors[2], lw=1) plt.xticks(k, k) plt.legend() plt.ylabel("Probability of $k$") #kの確率 plt.xlabel("$k$")
Gauss分布
定義
積分
まずガウス積分の導出を行う.
と置き, ヤコビアンはと計算できる.
とおく.
次に, の導出を行う.
これはと置きガウス積分に代入できる.
その際, よりガウス積分の結果に係数が付き,
最終的な結果がとなる.
多次元Gauss分布
指数分布
定義
期待値
分散
図
import numpy as np import matplotlib.pyplot as plt import scipy.stats as stats from IPython.core.pylabtools import figsize figsize(12.5, 4) expo = stats.expon lambda_ = [0.5, 1, 1.5] # 指数分布のパラメタλ colors = ["#348ABD", "#A60628", "#66FFB2"] a = np.linspace(0, 4, 100) # 本来は連続値だがグラフにする上で離散値をつくる for l, c in zip(lambda_, colors): # 指数分布は scale=1/λ を入力する plt.plot(a, expo.pdf(a, scale=1. / l), lw=3, color=c, label="$\lambda = %.2f$"%l) plt.fill_between(a, expo.pdf(a, scale=1. /l), color=c, alpha=.33) plt.legend() plt.ylabel("$f(k$)") #kの確率 plt.xlabel("$k$")
二項分布
定義
k: ベルヌーイ試行についてある事象が成功する回数
n: すべての試行回数
p: ベルヌーイ試行についてある事象が成功する確率
積分
二項定理より自明
期待値
分散
を用いる.
の計算では, 二項定理の係数を消すためと, 期待値の定義式に落とし込むため,
という処理を施す. 前半は, 期待値の計算のように二項定理の係数項が2つ分うち消える.
後半は, 期待値の定義の式と一致する.
図
n=10のとき, p=0.1だと1回成功する確率が38%くらい. p=0.5だと5回成功する確率が25%くらい., p=0.9だと9回成功する確率が38%くらいと読み取れる.
実際, 代入して計算すると,
import numpy as np import matplotlib.pyplot as plt import scipy.stats as stats from IPython.core.pylabtools import figsize figsize(12.5, 4) binom = stats.binom # Binomial分布 n_ = [5, 10] p_ = [0.1, 0.5, 0.9] # Binomial分布のパラメタ(確率p) colors = ["#348ABD", "#A60628", "#66FFB2"] for n in n_: for i, p in enumerate(p_): k = np.arange(n+1) # [0, 1, 2, ..., 15] # binom.pmf(k, n ,p)でBinomial分布の値を得る plt.bar(k, binom.pmf(k, n, p), color=colors[i], label="$n= %d, p = %.1f$"%(n,p), alpha=0.6, edgecolor=colors[i], lw=1) plt.xticks(k, k) plt.legend() plt.ylabel("Probability of $k$") #kの確率 plt.xlabel("$k$") plt.show() plt.close()