確率分布(工事中)
確率分布とは,確率変数と確率の対応をとったものです.
ある事象がある値をとるときの確率は〜という言い方をします.
例えば,サイコロを振った時に出る目が1となる確率はという言い方を日常でも使うと思います.
このとき,サイコロを振ったときに出る目を確率変数,1を実現値と呼びます.
確率変数を,実現値を,確率をとすると,
確率変数の実現値がとなる確率はというのは次式で表現されます.
サイコロの例だと, です.
確率分布とは,確率変数と確率の対応をとったものです.
確率変数の実現値が離散か連続かで分類されます.
以下,離散確率分布と連続確率分布について書いています.
import math import numpy as np import matplotlib.pyplot as plt %matplotlib inline
離散確率分布
離散一様分布
ある事象がある実現値となる確率が起こり得る全ての実現値で同じ場合
def discrete_uniform(N): prob = 1. / N return prob # 例えばサイコロの出る目 N = 6 x = np.arange(1, N+1) probs = [discrete_uniform(N)] * N plt.bar(x, probs) plt.ylim(0, 1.) plt.xlabel('X') plt.ylabel('P(X)')
ベルヌーイ分布
確率変数の実現値が二つの場合の確率分布です.よく,ある事象が起こるか起こらないかを表すときに使われます.パラメータはある事象が起こる確率です.
def bernoulli(p): return p[f:id:ryonsd:20200523211401p:plain] p = 0.5 x = [0,1] probs = [1 - bernoulli(p), bernoulli(p)] plt.bar(x, probs) plt.ylim(0., 1.) plt.xticks([0, 1]) plt.xlabel('X') plt.ylabel('P(X)')
二項分布
ベルヌーイ分布(パラメータ)に従う事象をある回数繰り返したときに,ある事象が起こる回数が確率変数
def binominal(k, N, p): bin_coef = math.factorial(N) / math.factorial(k) / math.factorial(N-k) prob = bin_coef * (p ** k) * (1-p)**(N-k) return prob N = 10 p = 0.5 x = np.arange(1, N+1) probs = [] for k in x: probs.append(binominal(k, N, p)) plt.bar(x, probs) plt.ylim(0., 1.) plt.xlabel('X') plt.ylabel('P(X)')