おさかなせいざ

おさかなせいざ

プログラミングメモや日記がわりに

一様分布の上限に別の一様分布で生成した値を使うと確率密度関数が対数関数になる理由

以下のツイートを見て確かにそうっぽいなぁと思ったので確認してみました.

上記のツイートでは指数関数とおっしゃられていますが,実際には対数関数になっていたのでその理由について述べます.

はじめに  0\leq x \leq 1 で定義される一様分布 Aの累積密度関数は


P(x \leq a) = a

であらわされます.一様分布なので各値をとる確率は一様に微小  dx です. (ふつうに  P(a) = 1 でもよさそう?) 次に一様分布 Aから得られた値  a を上限とした際の一様分布 B_aについて考えます. このとき, B_a がある値  b 以上を取る確率は


P(b \leq x | a) = 
\begin{cases}
0 & if \ b \gt a \\\
\frac{a-b}{a} & otherwise
\end{cases}

です.A がある値  a を取る確率を微小な値  da として,A で取り得る値  [0,1] 全体で  P(b\leq x| a)積分すれば上側からの累積密度,


\begin{split}
P(b\leq x) &= \int_0^1 P(b\leq x | a) da \\\
&= \int_0^b P(b\leq x | a) da + \int_b^1 P(b\leq x | a) da 
 \\\
&= \int_b^1 \frac{a-b}{a} da \\\
&= [a - b\log a ]_b^1 \\\
&= 1 - 0 - (b - b \log b) \\\
&= 1 -b + b\log b
\end{split}

が得られます.これを下側からの累積密度に直すと

 P(x \leq b) = 1 - P(b \leq x) = b - b\log b

となります.

また 各 b を取りうる確率密度は累積密度の微分なので,


\begin{split}
P(b) &= P(x\leq b)' \\\
&= 1 - 1 - \log b \\\
&= -\log b
\end{split}

となり,対数関数になることがわかりました. random を3段にした場合には同様の展開で


\begin{split}
P(c \leq x) &= \int_0^1 -P(c \leq x | b) \log b\ db \\\
&= \int_0^1 -\frac{b-c}{b} \log b\ db \\\
&= \int_c^1 (\frac{c}{b} - 1) \log b\ db \\\
&= c\int_c^1 \frac{1}{b} \log b\ db  - \int_c^1 \log b\ db\\\
&=  c[\frac{\log^2 b}{2}]_c^1 - [b \log b - b ]_c^1 \\\
&= -c\frac{\log^2 c}{2}  - 0 + 1 + c\log c - c \\\
&= -c\frac{\log^2 c}{2}  + c\log c + 1 - c \\\
&= c(-\frac{\log^2 c}{2}  + \log c - 1) + 1\\\
P(x \leq c) &= 1 - P(c \leq x) = c(1 + \frac{\log^2 c}{2}  - \log c) \\\
P(c) &= P(x \leq c)'  = 1 + \frac{\log^2 c}{2}  - \log c + c(\frac{1}{c}\log c -\frac{1}{c}) \\\
&=  1 + \frac{\log^2 c}{2}  - \log c + \log c - 1 \\\
&= \frac{\log^2 c}{2}
\end{split}

となりました.(どっか間違ってそうで怪しい) この調子で random を多段にしていくと対数関数の多段数乗の関数になりそうです.

 M 段目の確率密度がわかっていればその次も再帰的に求められます. 入れ子の階層が N=M-1 階のとき確率密度は おそらく  P(a_{N'}) = (-1^{N'}) \frac{ {\log}^{N'} a_{N'} }{ {N'}! } になると思われるので以下で証明しましょう.

 N'=Nのとき上記式が成り立つ(ただし自明に P(a_0) = 1)とすると, N'=N+1について,


\begin{split}
P(a_{N+1} \leq x) &= \int_0^1 P(a_{N+1} \leq x | a_N) P(a_N) da_N \\\
&= \int_{a_{N+1}}^1 P(a_N) da_N -\int_{a_{N+1}}^1 \frac{a_{N+1}}{a_N} P(a_N) da_N \\\
&= \int_{a_{N+1}}^1 (-1^{N})\frac{{\log}^N a_N}{N!} da_N -\int_{a_{N+1}}^1 \frac{a_{N+1}}{a_N} (-1^{N}) \frac{{\log}^N a_N}{N!} da_N \\\
&=  (-1^{N})[  \sum_{n=0}^N \frac{(-1)^{N-n}}{n!} a_N {\log}^{n} a_N  ]_{a_{N+1}}^1 - (-1^{N})a_{N+1}[ \frac{1}{N+1} \frac{{\log}^{N+1} a_N}{N!}]_{a_{N+1}}^1 \\\
&=  (-1^{N})\left\{ (-1^{N}) - \sum_{n=0}^N \frac{(-1)^{N-n}}{n!} a_{N+1} {\log}^{n} a_{N+1}  + a_{N+1}\frac{{\log}^{N+1} a_{N+1}}{(N+1)!} \right\} \\\
&=  1 + (-1^{N})\left\{ - \sum_{n=0}^N \frac{(-1)^{N-n}}{n!} a_{N+1} {\log}^{n} a_{N+1}  + a_{N+1}\frac{{\log}^{N+1} a_{N+1}}{(N+1)!} \right\} \\\
P(x \leq a_{N+1} ) &= 1-P(a_{N+1} \leq x)  = (-1^{N})\left\{\sum_{n=0}^N \frac{(-1)^{N-n}}{n!} a_{N+1} {\log}^{n} a_{N+1}  - a_{N+1}\frac{{\log}^{N+1} a_{N+1}}{(N+1)!} \right\} \\\
P(a_{N+1}) &= P(x \leq a_{N+1} )' \\\
&=  (-1^{N})\left\{ \frac{{\log}^N a_{N+1}}{N!} - \left(\frac{{\log}^{N+1} a_{N+1}}{(N+1)!} + \frac{{\log}^{N} a_{N+1}}{(N)!} \right) \right\} \\\
&= (-1^{N+1}) \frac{{\log}^{N+1} a_{N+1}}{(N+1)!}
\end{split}

なので, N'=N+1 においても  P(a_{N'}) が成り立ち数学的帰納法より任意の自然数  N' について証明されました.

一様分布から対数関数が出てくるのは面白いですね.

アドベントカレンダー日記24日目 日記

adventar.org

大学生にはレポートというものがありますが大抵TAの方か,まれに先生が採点をされてその結果が学生側に帰ってくることは基本ありません. レポートの修正もありません(と聞いてます).

自分が高専のときはレポートを提出しても基本的なフォーマットを守っていなかったり,必要な情報が抜けている,考察の根拠が不足している等々があれば赤入れされ返却されていました. 印刷して提出すればいい僕等は何が駄目なのか教えてもらえるので,そこを修正して提出していました.手書きを強要されていた学科の人たちは可哀想でした. フィードバックがないとレポートの書き方はわからないと思うんですが,世間の大学生は講義で一度習えば完璧になるからフィードバックはないんですかね? 現在課題を提出しても何もフィードバックがないので不安だというだけの愚痴でした.

わからなすぎると講義先生に「こう書いたんですがこの認識であっていますか?」と聞きますが,それも本来なら必要でない先生の時間をうばっているようで少し罪悪感があります.めっちゃ聞いたけど.

今まで3行の日記も3週間は続けて書けなかったのによくやったと自分で思います.一日空いているところは長め記事を書いてそのうち埋めます.

今日の日記は以上です.明日は面白いの書きたい

アドベントカレンダー日記23日目 全部一緒

adventar.org

AtCoder には沢山の問題があります. もちろんその中には似た問題もあります.

今日サークルのバチャコンで解いた問題(上)によく似た問題(下)を教えてもらいました. 次の2つの問題をご覧下さい.

atcoder.jp

atcoder.jp

どちらも入力の形式が同じで回答も似たような出力を期待しています. 実際この2つは同じコードでACします.

問題の言い方はたくさんありますが,問題を解く段階になると共通の方法で解決できることはプログラムではぼちぼちあるんやなと感じました.

ちなみに全員理由はわからないけどエスパーで回答してACしてました.

今日の日記は以上です.これで人生とかに話を拡張する人はトポロジー的な感覚鋭そう