2015年10月6日火曜日

確率密度を例える(潰したスポンジ)

こんな「確率密度関数」のグラフを見たことありますよね?「正規分布」が有名ですが、「正規分布」を呪文のように唱えることに違和感がある私は(やっぱり俺はベイジアンなのかも?)は、左のようなネットにあった「落書き」画像をあえて使ってます。

統計学をやり直しながらデータ分析について日々学んでいる私ですが、平易な解説で確率密度を説明する方法をずっと考えていました。積分を使った「お堅い」説明もある程度は理解できる状態にはなりましたが、もう少し自分の理解も深めたいと思い、解りやすい解説をしたいと思っていました。

そんな折、先日から久しぶりに読み直し始めた「Doing Bayesian Data Analysis」の「3.3.2 Continuous distributions: Rendezvous with density」の解説を読んで「これだ!」となって、それを元に書いてみることにした次第。

本書を既に読んでいながら、「何で今頃?」への答えは「この章はベイズとはあまり関係がない」と思い、斜め読みしていたから。これは「半分本当」です。「残りの嘘」は「読んでもよく分からなかったから、とっととベイズの話へ」という感じ。結局「Why Bayes? の前に」に書いたように「基本的な確率論を理解していなかった」からです。正直でよろしい!(笑)


離散型て普通じゃない

今回の「確率密度」は、高校の数学で取り上げられているのか不明。ネットで少し調べたところ、教科書には載っているが「受験対象ではない」ような雰囲気。「受験対象て...」と複雑な心境ですが、そこそこ難しいので仕方がない。高校生の頃「確率・統計」が大の苦手だった私は何も言えません。

よって、そんな高校生の頃の「確率・統計」に出る話は「離散型確率」と言えそうです。つまり「サイコロの目が出る」「黒玉が続けて2回出る確率」など。そこでは「各事象」(サイコロの目の出方、など)の出現確率は「一様」(全て同じ確率)です。たとえ事象の数が多くなろうとも、一様な例ばかりです。例えば、ロト6の一等の当選パターンの数が 6,096,454通り のように大きな数であろうと、当選する確率は「離散型確率」です。先のロト6の投稿に書いたように「勝率5割超えるまでの年数」も簡単に計算できます。それは「人類は存在してるか?」てぐらいの年数ですよ(笑)

確率論を大分理解できると、こんな「離散型確率」は「計算すれば何とかなる」と少々ナメた態度にもなりますが、残念ながらこの世の中「離散型確率」で求めるような事象は、データ分析と呼ばれる領域では「普通じゃない」です。

そんな「普通じゃない感」をご理解頂くために、本書から引用します。

For example, the probability that I eat exactly 2319.58372019... calories today is essentially nil, and that is true for any exact value you care to think of. We can, however, talk about the probability of intervals: The probability that I eat between 2000 and 2500 calories today is, say, .43.

「今日、2319.58372019...カロリー摂取した確率」は「0」です。このことは、他のどんな厳密な数にもいえること。しかしながら「the probability of intervals 区間の確率」のような場合は違って「今日は 2000 から 2500 カロリー摂取した確率は 43%」と言える。

こんな「今日の摂取カロリー」が「連続型」と呼ばれるものです。

多分「何で確率が 0 なんだよ?!」となるかもしれません。ずっと前は、私もそう思いました。そこで、誤解を招くかもしれないが、私なりの解説をしてみます。

「2319.58372019... カロリー」なんて無理数の数を予測するなんて不可能ですよね? そもそも「2,320カロリー」て数字も正確じゃない。それは「計測器の精度」に依存して、小数点以下は続くだろうし、ピッタリ「2,320カロリー」になる確率は「ロト6一等」の確率より低いんじゃないか? ということで、そんなピッタリの値より「こっからここまでの確率」とした方が自然なのです。

どうでしょう? 以降、本書を用いて再び説明します。


スピナーの矢印が指す値

以下、本書の Figure 3.2、目盛りの異なる3つのスピナー(ボードゲームなどにある矢印が円の中心で回転する奴)と、それぞれの確率密度関数のグラフ。スピナーの矢印が止まる確率はどれも同じ(一様)とする。
ここでのポイントの一つは、スピナーの目盛りが無限に小さいこと。とか 0.1 とかの刻みではない、もっと極小の目盛り。よって、先の「厳密なカロリー数の確率」と同様に「矢印が 0.54321... に止まる確率」を考えても意味はないと思いませんか?

以下、上図のそれぞれのスピナーを見てみます。

1番目のスピナー

矢印が 0 から 1 の値を指すスピナー、これが X軸。方や Y軸の「確率密度:p(x) density」は、どんな 値であっても常に 1.0 。そして、全ての事象が起きる確率は、全てのx値になる確率の総和なので

値の 0 から 1.0 の幅」×「1.0」= 1.0

つまり、グラフの線とX軸(y = 0)で囲まれた面積のこと(厳密には「積分値」)。

2番目のスピナー

1番目との違いは目盛りが「0 から 0.5」、つまり 0.5 より大きい x 値はない。確率密度は常に 2.0 で、確率の総和

値の 0 から 0.5 の幅」×「2.0」= 1.0

注目するのは、1番目のグラフと比較して、y値が高くてX軸の「0 から 1」の前半に偏っている点。「底辺が縮んで高さが伸びた」と考えれば、相変わらず「確率の総和」が 1.0 なのは納得できるでしょう。

3番目のスピナー

これも不正のないスピナーなので、同じ確率でどんな値も指す。ところがグラフの形が前の2つとは異なる。しかしながら、グラフが描く領域の面積は相変わらず 1.0

これは x が「1 から 100 までの、10 を底とする対数(常用対数)」だから。次の二つのグラフは「1 から 10」と「1 から 100」の常用対数。10 以降から y値の上昇具合が鈍化している。
> par(mfrow=c(1,2))
> plot(log10(seq(1,10)))
> plot(log10(seq(1,100)))

3番目のスピナーは目盛り値 10.0 で半周なので、前半の半周の「(average) probability density(平均)確率密度」は 0.5 / (10 - 1) ≈ 0.05556、後半は 0.5 / (100 - 10) ≈ 0.00556、自明だがこれらの確率密度の総和は

> 0.5/(10-1)*(10-1) + 0.5/(100-10)*(100-10)
[1] 1

この3番目のチャートが左に偏っているのは、値が「から 10」と「10 から 100」の確率が 50 : 50 であることを示している。


スポンジ登場

3番目のスピナーの例は、少し悩ましいかもしれません。ということで、本書で「確率密度」をスポジンに例えた一節を引用します。

The lowly sponge can again educate our intuition. The 1 gram sponge can be squeezed at one end while the other end remains unsqueezed. The overall mass of the sponge remains 1 gram, but the density in the compressed end is much higher than the density in the uncompressed end.

1グラムのスポジンの片側を潰して、もう片側は潰さない。1グラムの質量は変わらないが、潰した方は潰さない方と比較して密度が高くなる。

左の正規分布に関する式は、多くの人にぱっと見複雑です。じっと見つめても複雑です。ポイントを押さえれば少しは分かりますが、それでも複雑です。

先のスポンジの例では、どんなに形に潰してもスポンジの質量は変わりません、これが「確率密度の総和が 1.0」に相当します。潰して密度が高まった箇所は「一様であった確率密度の変化」に相当します。

間違ってたら後日訂正しますが、確率分布(主に、連続型)の確率密度関数は、その関数が描くグラフの領域の面積を 1.0 にしたもの。つまり

各事象(興味の対象の出来事)の確率はの総和は常に 1.0

を前提に作られたものだと推察。その 1.0 という前提は単純だが、後追いで離散型の確率関数を導いたら「複雑になっちゃいました」という感じじゃなかろうか。

うわぁ、数学的知識が疎い俺が、こんな風に言い切って良いのか正直不安だが、そんな風に思っています。私は「数学者」でも「統計学者」でもないので、こんな風に解釈した次第でございます。

先に書いたように、誤りに気づいたら瞬時に訂正したします!! どんな些細なミスや誤解があったのなら、ご指摘頂ければ幸いです。

0 件のコメント:

コメントを投稿