Pythonで確率分布、累積分布、分位点などを計算する。
簡単のためにとりあえず二項分布で実験。
コインじゃ面白くないので、たとえば1回の施行で事象A,Bが0.4、0.6の確率で起きるとして
それを50回繰り返すとする。
このrvが確率分布を扱ういろいろなメソッドを提供してくれるらしい。
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_discrete.html#scipy-stats-rv-discrete
平均、分散は
23回Aが起きるときの確率は
分布の形が知りたいときは
分位点は累積分布関数の逆関数から求まる。
簡単のためにとりあえず二項分布で実験。
コインじゃ面白くないので、たとえば1回の施行で事象A,Bが0.4、0.6の確率で起きるとして
それを50回繰り返すとする。
from scipy.stats import binom n = 50 p = 0.4 rv = binom(n, p)
このrvが確率分布を扱ういろいろなメソッドを提供してくれるらしい。
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_discrete.html#scipy-stats-rv-discrete
平均、分散は
print rv.mean(), rv.var()
そのほかにもstdとかmeanとかある。23回Aが起きるときの確率は
print rv.pmf(23)pmfはProbability Mass Functionの略で確率密度関数の離散関数版のようだ。
分布の形が知りたいときは
x = np.arange(0, n) plt.vlines(x, 0, rv.pmf(x))累積分布は(さっきのと重ねて描くと)
cdf = rv.cdf(x)
plt.plot(x, cdf)
80%となるような分位点はprint rv.ppf(0.8)23という結果なので図と一致する。ちなみに定義からあたりまえやけど、
分位点は累積分布関数の逆関数から求まる。
0 件のコメント:
コメントを投稿