Create  ホーム  Index  Search  Changes  RSS  wikifarm  Login

Pr.App

付録

確率分布間の「距離」


ょゎさんの「なんで確率は 0 以上 1 以下なのさ」について.

こんな解釈はどうでしょう.

  • 確率 0.4 と確率 0.5 は, あんまり違わない
  • 確率 0.1 と確率 0.2 は, だいぶ違う (成功率が 2 倍!)
  • 確率 0.8 と確率 0.9 も, だいぶ違う (失敗率が 2 倍!)
  • 確率 0.9 と確率 1.0 は, 無限に違う (絶対にミスしないなんて無理!)

この感覚を定式化できないか?

一つの案は, 「確率 q と確率 p との見分けやすさ」を測ることです. ちゃんと言うと,

確率 q で表が, 確率 (1-q) で裏が出るコインを n 回投げたとき,
表の割合が「たまたま」 p になる確率 S は?

というのを計算して, それにもとづいて「見分けやすさ」を定義しようという方針です.

この計算はふつうに二項分布で,

S = C(n, np) q^{np} q'^{np'}
ここに C(n, np) = n! / ((np)! (np')!), p' = 1 - p, q' = 1 - q

と答えられます(np も np' も整数ということにしておきます).

回数 n が十分大きいときを想定 すれば*1, Stirling の公式

N >> 1 のとき log(N!) 〜 N log N - N

を使って,

log S
= log(n!) - log((np)!) - log((np')) + np log q + nq' log q'
〜 - n (p log p - p log q) - n (p' log p' - p' log q')

と近似値を見れば十分でしょう(0 < q < 1 ということにしておきます). 得られた結論をざっくり言うと,

本当の確率が q なのに, たまたま p みたいなサンプルが出てしまう確率は, おおよそ
  exp(- n D(p←q))
である. ここに, n はサンプル数で,
  D(p←q) = (p log p - p log q) + (p' log p' - p' log q')

この結論を見ると,

  • サンプル数 n を増やすほど, 「q なのにたまたま p が出る」確率は減る
  • D(p←q) が大きいほど, その減り方は速くなる

ということに気づきます. このことから, D(p←q) を「q と p との見分けやすさ」とみなすのは妥当でしょう. 十分な精度で見分けるために必要となるサンプル数が, D で決まるからです. この D は Kullback-Leibler divergence と呼ばれます (ただし, D(p←q) でなく D(p||q) という記号がふつうは使われます).

D は次の性質を持ちます.

  • D(q←q) = 0. p≠q なら D(p←q) > 0.
  • p≠0 なら D(p←0) = ∞. p≠1 なら D(p←1) = ∞. (いろいろ不正確な言い方ですが)

最初に挙げた「解釈」と照らしても雰囲気が出ていますね. 実際, 計算してみると

D(0.5←0.4) = 0.0204
D(0.2←0.1) = 0.0444

となり, D(0.5←0.4) < D(0.2←0.1) も成り立っています.

ruby -e 'include Math; def d(p,q); p*log(p/q)+(1-p)*log((1-p)/(1-q)); end; p d(0.5,0.4); p d(0.2,0.1)'

気分としては, 「D は p, q 間の距離みたいなものだ」と思ってください. ただし, 「距離だ」と言い切ってしまうのはちょっと差しさわりがあります.

  • D(p←q) ≠ D(q←p)

という, 距離にしては妙な性質を D は持っているからです. (実はもう一つ差しさわりがあって, D は本当は, 距離というよりも「距離の自乗」に 相当します. D の性質をもっといろいろ調べるとそのことが見えてきます.)

\memo{まだ: 検定論で云々. 情報理論で典型列が云々. 大偏差原理云々. 局所的に二次形式で近似するとフィッシャー計量でクラメル・ラオが云々. 情報幾何が云々.}


ついでに, 同ページの「キミの言う90%は、本当に90%なの?」についても関連ネタ.

仲間内で, 「出欠の確率は?」という聞き方をときどきします. そのとき, でたらめな申告を防ぐには, 申告と合わない行動から罰金を とればよいでしょう. では, 罰金をどう設定したら合理的か?

一つの案は, 出席確率を q と申告した場合,

  • 出席したら罰金 - log q 千円,
  • 欠席したら罰金 - log(1-q) 千円.

これなら「正直に申告するのが最適解」になります.

実際, 本当の出席確率を p としたら, 罰金の期待値

f(q) = - p log q - (1-p) log(1-q)

が最小になるのは

df/dq = - p / q + (1-p) / (1-q) = 0

のとき. つまり q = p と申告したときです.

もし「出席確率 1」と申告して欠席したりすれば, 罰金無限大!


コメントはプログラミングのための確率統計


Last modified:2011/08/23 10:57:18
Keyword(s):
References:[Pr.Comment]
This page is frozen.

*1 正確には, 「np >> 1 かつ np' >> 1」という想定