r_nsdのブログ

r_nsdのブログ

勉強したこと・調べたこと・思ったことを残しておくためのブログ

MENU

確率分布(工事中)

確率分布とは,確率変数と確率の対応をとったものです.

ある事象がある値をとるときの確率は〜という言い方をします.
例えば,サイコロを振った時に出る目が1となる確率は \frac{1}{6}という言い方を日常でも使うと思います.
このとき,サイコロを振ったときに出る目を確率変数,1を実現値と呼びます.

確率変数を X,実現値を x,確率を pとすると,
確率変数 Xの実現値が xとなる確率は pというのは次式で表現されます.

 Pr(X=x)=p

サイコロの例だと, Pr(X=1)=\frac{1}{6} です.

確率分布とは,確率変数と確率の対応をとったものです.

確率変数の実現値が離散か連続かで分類されます.

以下,離散確率分布と連続確率分布について書いています.

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)')

f:id:ryonsd:20200523210023p:plain

ベルヌーイ分布

確率変数の実現値が二つの場合の確率分布です.よく,ある事象が起こるか起こらないかを表すときに使われます.パラメータはある事象が起こる確率です.

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)')

f:id:ryonsd:20200523211401p:plain

二項分布

ベルヌーイ分布(パラメータ p)に従う事象をある回数 N繰り返したときに,ある事象が起こる回数 kが確率変数

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)')

f:id:ryonsd:20200523211448p:plain

カテゴリ分布

多項分布

ポアソン分布

負の二項分布

ポアソン二項分布

幾何分布

超幾何分布

ジップ分布

ゼータ分布

連続確率分布

連続一様分布

指数分布

正規分布ガウス分布

ベータ分布

t分布

ガンマ分布

ウィッシャート分布

カイ2乗分布

ガウス分布

対数正規分布

極値分布(generalized extreme value distribution, GEV)

ガンベル分布

ワイブル分布

ロジスティック分布

F分布

コーシー分布

アーラン分布

三角分布

ラプラス分布

レイリー分布

パレート分布

一般化双曲型分布

双曲線正割分布