Back to page

− Links

 Print 

Python​/標準正規分布 :: NJF Wiki

xpwiki:Python/標準正規分布

Table of contents
  • はじめに
  • 横軸から確率を出す
  • 累積確率から横軸の値を出す

はじめに anchor.png[1] Edit [2]

統計解析の本の最後によく標準正規分布表が載っています。 これで正規分布に関する問題を解くこともできますが、「21世紀にもなって表とか引きたくない」と思う事もよくあります。しかも本によって上側確率だったり0からの累積確率だったりまちまちです。 表の使い方覚えるぐらいなら、統計ソフトやプログラムの統計ライブラリの使い方を覚えた方が後々役に立ちそうで、あまり学ぶモチベーションがあがらないことがあります。

そういうときに、pythonが入ったパソコンがあれば、scipyを使って計算できます。 scipyはpipがあればコマンドラインで

pip install scipy

pip3 install scipy

などを実行すればインストールできます。

Page Top

横軸から確率を出す anchor.png[3] Edit [4]

横軸の値から上側確率を出すには

>>> from scipy.stats import norm
>>> norm.sf(x=1.233)
0.10878788208591617

とします。

横軸の値から下側確率を出すには

>>> from scipy.stats import norm
>>> norm.cdf(x=1.233)
0.8912121179140838

とします。

確率の定義から、この二つを加えると1になります。

>>> norm.cdf(x=1.233) + norm.sf(x=1.233)
1.0

なので、どちらか覚えれば十分です。 ただし、1からsfを引くよりは直接cdfを使った方が精度は良くなる可能性があります。

Page Top

累積確率から横軸の値を出す anchor.png[5] Edit [6]

累積確率から横軸の値を出すには

>>> from scipy.stats import norm
>>> norm.ppf(q=0.9)
1.2815515655446004

とします。

上側確率から横軸の値を出すには、

>>> norm.isf(q=0.9)
-1.2815515655446004

とします。

標準正規分布の性質から、累積確率の結果とは符号が逆転します。 よってこれもどちらか覚えれば十分です。

normは標準正規分布だけではなく、一般の正規分布にも対応しています。

一般の正規分布で使う時はパラメータに loc, scaleを加えます。 それぞれ平均と標準偏差です。 ただ、標準化すれば済むのでこのページでは省略します。

詳しくはこちらでscipy.stats.norm[7]

Page Top

anchor.png[8] Edit [9]

95%信頼区間を求めるときに使う係数、「1.96」を求めることを考えます。 95%信頼区間は平均値の周りに確率の和が0.95となる範囲を取り出すことになるので、上側および下側確率が0.025になる部分以外とも考えられます。

よって上側確率から横軸の値を求めるisfを使えば

>>> norm.isf(q=0.025)

結果:

1.9599639845400543

を得ます。

同様に90%信頼区間の係数なら

>>> norm.isf(q=0.05)

結果:

1.6448536269514726

となります。

一般に100(1-a)%の信頼区間の係数を求めるならnorm.isf(q=a/2)と書けます。


Last-modified: 2019-06-27 (Thu) 20:23:17 (JST) (485d) by njf