- 差分 を表示
- ソース を表示
- Python/標準正規分布 へ行く。
1: 2019-02-23 (土) 22:47:45 njf | 現: 2019-06-27 (木) 20:23:17 njf | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | *はじめに [#aabe2971] | ||
統計解析の本の最後によく標準正規分布表が載っています。 | 統計解析の本の最後によく標準正規分布表が載っています。 | ||
- | これで正規分布に関する問題を解くこともできますが、「21世紀にもなって表とか引きたくない」と思う事もよくあります。 | + | これで正規分布に関する問題を解くこともできますが、「21世紀にもなって表とか引きたくない」と思う事もよくあります。しかも本によって上側確率だったり0からの累積確率だったりまちまちです。 |
- | 表の使い方覚えるぐらいなら、統計ソフトの使い方を覚えた方が後々役に立ちそうですし。 | + | 表の使い方覚えるぐらいなら、統計ソフトやプログラムの統計ライブラリの使い方を覚えた方が後々役に立ちそうで、あまり学ぶモチベーションがあがらないことがあります。 |
そういうときに、pythonが入ったパソコンがあれば、scipyを使って計算できます。 | そういうときに、pythonが入ったパソコンがあれば、scipyを使って計算できます。 | ||
- | scipyは | + | scipyはpipがあればコマンドラインで |
pip install scipy | pip install scipy | ||
か | か | ||
pip3 install scipy | pip3 install scipy | ||
- | などでインストールできます。 | + | などを実行すればインストールできます。 |
+ | *横軸から確率を出す [#aac48d6a] | ||
横軸の値から上側確率を出すには | 横軸の値から上側確率を出すには | ||
>>> from scipy.stats import norm | >>> from scipy.stats import norm | ||
>>> norm.sf(x=1.233) | >>> norm.sf(x=1.233) | ||
0.10878788208591617 | 0.10878788208591617 | ||
+ | とします。 | ||
横軸の値から下側確率を出すには | 横軸の値から下側確率を出すには | ||
Line 19: | Line 22: | ||
>>> norm.cdf(x=1.233) | >>> norm.cdf(x=1.233) | ||
0.8912121179140838 | 0.8912121179140838 | ||
+ | とします。 | ||
- | もちろん、この二つを加えると1になります。 | + | 確率の定義から、この二つを加えると1になります。 |
>>> norm.cdf(x=1.233) + norm.sf(x=1.233) | >>> norm.cdf(x=1.233) + norm.sf(x=1.233) | ||
1.0 | 1.0 | ||
- | |||
なので、どちらか覚えれば十分です。 | なので、どちらか覚えれば十分です。 | ||
+ | ただし、1からsfを引くよりは直接cdfを使った方が精度は良くなる可能性があります。 | ||
+ | |||
+ | *累積確率から横軸の値を出す [#o9550ac2] | ||
累積確率から横軸の値を出すには | 累積確率から横軸の値を出すには | ||
Line 31: | Line 37: | ||
>>> norm.ppf(q=0.9) | >>> norm.ppf(q=0.9) | ||
1.2815515655446004 | 1.2815515655446004 | ||
- | |||
とします。 | とします。 | ||
Line 39: | Line 44: | ||
とします。 | とします。 | ||
- | もちろん累積確率の結果とは符号が逆転します。 | + | 標準正規分布の性質から、累積確率の結果とは符号が逆転します。 |
よってこれもどちらか覚えれば十分です。 | よってこれもどちらか覚えれば十分です。 | ||
+ | |||
+ | normは標準正規分布だけではなく、一般の正規分布にも対応しています。 | ||
+ | |||
+ | 一般の正規分布で使う時はパラメータに loc, scaleを加えます。 | ||
+ | それぞれ平均と標準偏差です。 | ||
+ | ただ、標準化すれば済むのでこのページでは省略します。 | ||
+ | |||
+ | 詳しくはこちらで[[scipy.stats.norm:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html?highlight=norm]]。 | ||
+ | |||
+ | *例 [#x5c62e31] | ||
+ | |||
+ | 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)と書けます。 |
- Python/標準正規分布 のバックアップ一覧
- Python/標準正規分布 のバックアップの現在との差分(No. All)
- 1: 2019-02-23 (土) 22:47:45 njf
- 2: 2019-02-23 (土) 23:26:07 njf
- 3: 2019-03-19 (火) 01:29:54 njf
- 4: 2019-04-20 (土) 02:58:59 njf
- 5: 2019-06-04 (火) 03:51:01 njf
ぺージ情報 | |
---|---|
ぺージ名 : | Python/標準正規分布 |
ページ別名 : | 未設定 |
ページ作成 : | njf |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
Counter: 4478,
today: 6,
yesterday: 0