午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

エクセルで1次のガウス関数(確率密度関数)、正規分布関数のNORMDIST

1次元のガウス関数をエクセルで
 
前回の画像のぼかし処理で使った
ガウシアンフィルタとかマスクとかも呼ばれる
イメージ 1
これ
等高線のグラフにして横から見る
イメージ 3
 
上から
イメージ 2
5x5のカーネルの場合
イメージ 4
中心の注目ピクセルに近いほど重みが増す
それも直線的に増えるんじゃないみたい
 
ここまでのカーネルは2次元、これが目的なんだけど、今回は1次元まで


 
画像のぼかし処理するだけならカーネルの数値さえ分かればいいんだけど
ググった先で読んでいると出てくるのが
 
ガウス関数とか確率密度関数とか正規分布関数とかいう
イメージ 5
これ、さっぱりわからん
 
さらに混乱するのが微妙に違う式が同じようにあること
イメージ 6
expの前のσが2乗されているのと、されていないもの
両方試して上の2乗されているほうがいい感じがしたので、上の式を使うことにして
 
これがガウスぼかしのカーネル作成に関係あるらしいけど
見方がさっぱりわからん
まず記号のよみと意味がわからん
分数と√ルート、2乗はわかるとして、σとexpとμ
 
	読み				意味
σ	しぐま			標準偏差、σ^2は分散になる
exp	いーえっくすぴー	自然対数の底、だいたい2.7くらいの定数、エクセルの関数だと
					=EXP(1)で得られる。exponential(指数関数)の略
μ	みゅー			平均
 
ガウス関数確率密度関数ではだいたいこういう意味らしい
うーん、前に分散を使ったときはσじゃなくてアルファベットのsだったような
 
 
 
exp
エクセルにもそのままの名前EXP関数が用意されていて
イメージ 19
引数に1を指定すると

f:id:gogowaten:20191214115345p:plain

目的の自然対数の底っていうのが得られる
なんのことかわからんけど得られる
 
 
expの右側が指数!
expは指数関数の略だっていうから
イメージ 21
こうだと思っていたら違って、expの右側がexpの指数で
 
イメージ 24
こういうことらしい
expって言われたらドラクエの経験値?くらいしか出てこない自分にしたら、わからんわ

 
エクセルやVBふうに書くと
イメージ 22
もっとエクセルらしく!
イメージ 23
長くなった、スクルトも出てきてよりドラクエっぽくなった
 
 
 
 
 
確率密度関数(ガウス関数)を使ってできるグラフが正規分布
イメージ 7
標準偏差(σ)=1、平均(μ)=0のときは標準正規分布っていうみたいで
この曲線が重みの数値に利用されているみたい
イメージ 8
σとμにそれぞれ1と0を入れて
イメージ 9
これを計算して
イメージ 10
こう、これが標準正規分布でさっきのグラフになる
 
 
 
 
ここまで見慣れない式と格闘してきたけどエクセルを使えば
 
エクセルのNORMDIST関数
イメージ 11
エクセルにも用意されていた!
4つ目の引数はFalseを指定すると確率密度関数の答えになるので、今回はFalseを指定
 
 
このNORMDIST関数を使って
イメージ 12
xが-5~5までを0.2刻み、平均=0、標準偏差=1を指定して標準正規分布
 
 

f:id:gogowaten:20191214115524p:plain

これでさっきの標準正規分布のグラフになる
 
 
 
平均(μ)
イメージ 14
平均の数値を変更するとグラフは左右に平行移動するだけで
ガウスぼかしのカーネルにとっては関係ないので
今回は平均=0で固定
 
 
 
イメージ 15
標準偏差を大きくすると、なだらかなグラフになる
 
 
3x3マスのカーネルを考えてxの値を-1,0,1の3つで
イメージ 16
小数点いっぱいだと見にくいので、一番小さい数値を1にするために、一番小さい数値で割り算して、さらに四捨五入すると
標準偏差=1のとき-1,0,1は1,2,1になった、こういうのが重みになるんだと思う
 
 
標準偏差=10にすると
イメージ 17
全部1になった
 
 
標準偏差=0.5にすると
イメージ 18
1,7,1とかなり偏った重みになった
 
 
5x5のカーネルを考えて-2から2
イメージ 25
それっぽい値が出てくる
 
 
 
 
NORMDIST関数を使わずに計算してみる
イメージ 26
μ(平均)の値はグラフの平行移動だけで、重みには関係なさそうなので0とすると
上の確率密度関数(ガウス関数)はμが取れて
イメージ 27
これでいいことになる
 
標準偏差=1のとき
expの前の部分をエクセルで書くと
=1/SQRT(2*PI()*1^2)
イメージ 28
 
expの指数の部分は
=-(x^2/(2*1^2))
-(A111^2)/(2*$A$108^2)
イメージ 29
 
最後にまとめて
expの前*exp^指数
イメージ 34
 
 
NORMDIST関数と比較
イメージ 35
同じ値になった!
 
 
グラフにすると

f:id:gogowaten:20191214115559p:plain

標準偏差=3で、x=-10~10

f:id:gogowaten:20191214115609p:plain

 
イメージ 33
以前emuLuaで回して開始から34万件目(33分)で全部15の個体が出て、個体値ごとに集計したその時のグラフが

ポケモン緑のゼニガメ個体値合計ごとの個体数のグラフ
イメージ 32
これがあったから正規分布のグラフを見たとき思ったのが
あっポケモンだ…
 
 
ここまでは1次元
カーネルは縦横がある2次元は次回
 
 
 
参照したところ
 
 
 
 
関連記事
次回、2019/04/27

gogowaten.hatenablog.com

エクセルで2次のガウス関数(確率密度関数)、正規分布関数のNORMDIST ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15943071.html
 
2018/3/22は1年前

gogowaten.hatenablog.com

分割するCubeの選択、メディアンカットで減色パレット ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15425150.html
分散は減色アプリのときが初めてだった
 
 
画像にノイズ付加するアプリ、一様分布乱数から正規分布乱数生成、エクセルのNORMINV関数で正規乱数 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15961286.html