こんにちわ!Yamuです!
前回までの記事で確率に
ついて例題を用いて説明、
勉強してきました。
今回からいよいよ
数学的な確率モデル、
確率密度関数を作っていきます!
今回は基礎的な確率分布
離散確率分布
連続確率分布
について説明していきます。
- 確率分布について知りたい
- 離散分布と連続分布の違いを知りたい
- seabornを使ってhistgramや連続分布を作りたい
確率とは?
確率とはある事柄(事象)Aが起こる
確からしさを数値で表したものである
記号で表すと\(P(A)\)でこの値は
\(0≦P(A)≦1\)
確率分布とは?
確率分布(Probability Distribution)は、
統計学や確率論において、
ある事象が発生する確率を示す
数学的なモデル、関数のことを指します。
データは計量値と計数値に分類できる。
それに対応して確率分布は、
連続モデル(連続確率分布)と
離散モデル(離散確率分布)があります。
データ分類の記事は下記を参照してください
確率変数とは?
確率変数(Probability Variable)は
確率論や統計学において用いられる概念の一つ
事象は言葉より数値の方が扱いやすい
実験や観測,試行によって異なる値をとり得る
変数を指します。
確率変数はランダムな実験や
現象をモデル化するのに利用される値です。
これはサイコロを振る実験や観測を行った時
サイコロの出る目は{1,2,3,4,5,6}で
1~6まで取りえる値の確率が与えられるので
確率変数になる。確率変数はXで表わされる
\(X=(x_1,x_2,x_3…x_n)\)
次に離散確率分布と連続確率分布について細かく解説していきます!
離散確率分布
サイコロを1回投げる時に出る目をxとすれば
その実現値の1~6は飛び値なので
計数値です。xは離散確率変数である。
離散確率型変数Xの値が
\(X=(x_1,x_2,x_3…x_n)\)となるとき
離散確率分布を表す関数は
\(f_i=P_r(x=x_i)\)
\(f_i\)は次の性質を持つ
\(f_i≧0\)
\(\sum_{K=1}^{∞}f_i=1\)
サイコロの例を使って
離散確率分布を説明してきます!
サイコロの出る目は1から6である。
以下の表に出る目の確率を表記する
確率変数 | 確率関数 | 確率の記号 | 一様分布 |
1 | \(f_1\) | \(P_r(x_1)\) | \(\displaystyle \frac{1}{6}\) |
2 | \(f_2\) | \(P_r(x_2)\) | \(\displaystyle \frac{1}{6}\) |
3 | \(f_3\) | \(P_r(x_3)\) | \(\displaystyle \frac{1}{6}\) |
4 | \(f_4\) | \(P_r(x_4)\) | \(\displaystyle \frac{1}{6}\) |
5 | \(f_5\) | \(P_r(x_5)\) | \(\displaystyle \frac{1}{6}\) |
6 | \(f_6\) | \(P_r(x_6)\) | \(\displaystyle \frac{1}{6}\) |
出目の確率はどれも一緒なので
今回は一様分布の確率モデルに
なってますね!離散分布の
一様分布を図にして
確率関数の形を
観察してみましょう!
縦軸に確率関数の値、横軸に確率変数を取ると
累積分布を確認すると\(\displaystyle \sum_{1}^{6}f_i=1\)が確認できる
連続確率分布
連続確率変数xから作られる確率分布が
連続確率分布である
連続確率変数は身長,体重など
計量値からなるものである。
連続確率分布の代表的なモデルは正規分布である。
\(\displaystyle \int_{-∞}^∞f(x)dx=1\)
\(\displaystyle P_r(a≦x≦b)=\int_a^bf(x)dx=1\)
正規分布はヒストグラムから拡張できる
ヒストグラムの説明とpythonで作り方詳細は以下記事に記載しています
次に実際にヒストグラムを作って
連続確率分布の確率密度関数に拡張していきます
1.平均5標準偏差1の正規分布に従うデータを1000個をヒストグラムにする
2.データ数(1000)×区間数(10)で各区間の度数を割る
ことで度数ヒストグラムから確率関数に拡張できる
\(\displaystyle f_n=\frac{各区間の度数}{データ数×区間数}\)
この時の確率関数は
3.n→∞,区間数→0に近づけることは
データは無限個になり区間幅がどんどん縮まり
青い幅が細くなっていく
すると滑らかな曲線に近づいていく
この関数を確率密度関数\(f(x)\)という
上記の確率関数をn→∞,区間数→0で
確率密度関数に拡張すると
赤い線が確率密度関数です!
最後にpythonを使った
グラフのレシピを載せておきます。
コードに黄色い下線を
引いたところが書き換えた所です!
おまけ(確率密度関数のコード)
1.seabornを使ったヒストグラムのレシピ
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from scipy.stats import norm
sns.set()
data = norm.rvs(loc=5, scale=1, size=1000)
fig, ax = plt.subplots()
ax.hist(data, label='data')
ax.legend()
ax.set_xlim(0, 10)
ax.set_ylim(0, 400)
ax.set_xlabel('x')
ax.set_ylabel('Frequency')
plt.show()
2.seabornを使った確率関数のレシピ
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from scipy.stats import norm
sns.set()
data = norm.rvs(loc=5, scale=1, size=1000)
fig, ax = plt.subplots()
ax.hist(data, density=True, label='data')
ax.legend()
ax.set_xlim(0, 10)
ax.set_ylim(0, 1)
ax.set_xlabel('x')
ax.set_ylabel('density')
plt.show()
2.確率関数と確率密度関数のレシピ
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from scipy.stats import norm
sns.set()
data = norm.rvs(loc=5, scale=1, size=1000)
fig, ax = plt.subplots()
ax.hist(data, density=True, label='data')
#カーネル密度推定をplot
sns.kdeplot(data, color='red', ax=ax)
ax.legend()
ax.set_xlim(0, 10)
ax.set_ylim(0, 1)
ax.set_xlabel('x')
ax.set_ylabel('density')
plt.show()
参考文献
まとめ
いかがだったでしょうか?
今回は基礎的な確率分布、確率関数の
離散確率分布(Discrete Probability Distribution)
連続確率分布(Continuous Probability Distribution)
について説明していきました。
おまけで確率密度関数のコードも書いているのでぜひ
作ってみてくださいね!