「諸概念の迷宮(Things got frantic)」用語集

本編で頻繁に使うロジックと関連用語のまとめ。

【確率論】【ベルヌーイ試行】ネイピア数eとの邂逅?

指数関数/対数関数は一定以上の規模に到達しないと、その指数関数的増大を顕現させません。従って両者の中間たる「e^0=1」すなわち「(1/N)^N」を計算しても急激に0に近付く減衰曲線を描くのみです。
統計言語Rによる検証例

#(1/x)^xの極限
(1/Inf)^Inf
[1] 0
#一応グラフ化してみる。
f0=function(x){(1/x)^x}
plot(f0, xlim=c(0,50),ylim=c(0,0.5),lty =1,main="n-th root of 1 / n", xlab="N", ylab="(1/N)^N")

f:id:ochimusha01:20190429180635p:plain

 考えてみればここでいう(母数が一定以上以上の規模に達しないと有意味な観測結果が得られない(1/N)^Nなる計算式、確率論/統計学上の最重要概念の一つたる 「ベルヌーイ試行Bernoulli trial)」そのものなんですね。

f:id:ochimusha01:20190503113436j:plain

つまり「ベルヌーイ試行」もまた「1ありき」の世界の数理モデルだったという事?

 

それでは具体的にはどうやって「有意味な観測結果を得る為の一定以上の規模」を確保しているのでしょうか? どうやら「連続尺度の保証」が鍵となってる模様…
幾何分布関数

17の倍数であるナンバープレートを見つけるためには,車を何台観測しなければないか。その答えは実は「幾何分布」と呼ばれる確率分布の確率密度関数になっている。

f:id:ochimusha01:20190503102548j:plain
①現在は希望ナンバーがあるため,ナンバーの分布には偏りがあるものの,ナンバーは一様分布していると仮定する。すると,17の倍数はおおよそ1/17の確率で見つけることができる。

②ここで各観測はベルヌーイ試行と捉えることができる。例えば5回目に "初めて" 17の倍数を見つける確率は,4回17の倍数以外 (=16/17) の事象を観測し,5回目に1/17の事象を観測したと考えればよい。

#統計言語Rでの検証例
 (1-1/17)^(5-1)*1/17
[1] 0.04615676

③一般化すると,確率pで起きる事象をk回目で初めて観測する確率はf(k;p)=(1−p)^(k-1)*pと表現することができる。

#統計言語Rでの検証例
f0<-function(p,k){(1-p)^(k-1)*p}
f0(1/17,5)
[1] 0.04615676

これが「幾何分布」と呼ばれる確率分布の「確率密度関数」である。

確率密度関数(PDF=Probability Density Function)あるいは確率関数 (probability function) - Wikipedia

確率論において、連続型確率変数がある値をとるという事象の確率密度を記述する関数である。確率変数がある範囲の値をとる確率を、その範囲にわたって確率密度関数積分することにより得ることができるよう定義される。確率密度関数の値域は非負の実数であり、定義域全体を積分すると1である。
標準正規分布の箱ひげ図および確率密度関数 N(0, σ2)

f:id:ochimusha01:20190503115030p:plain


例えば単変数の確率密度関数を平面上のグラフに表現して、x軸に確率変数の値を、y軸に確率密度を採った場合、求めたい範囲(x値)の下限値と上限値での垂直線と、変数グラフ曲線とy = 0の直線とで囲まれる範囲の面積が確率になる。

実はこの用語が何を指しているか自体は曖昧で、確率論研究者や統計学者の間では標準的でないとされる場合がある。他の資料に拠れば「確率密度関数」は値の集合に対する関数として定義されたり、累積分布関数との関係で言及されたり、確率質量関数の意味で使われたりする。さらには、密度関数 (density function) という用語が確率質量関数の意味で用いられている場合もある。

「確率密度」の思考モデル

例として、寿命が4〜6時間程度のバクテリアがいると仮定する。

  • この時、特定のバクテリアが丁度 5時間で死亡する確率はどれ位だろうか? 答えはほぼ0%である。およそ5時間で寿命を迎えるバクテリアはたくさん居るが、正確に5.0000000000…時間で死ぬことはまずない。
  • 一方で、5〜5.01時間で死亡する確率はどうだろうか? 例えば、これが2%だとする。
  • では、その1⁄10の範囲の5〜5.001時間である確率は? 答えはおよそ 2% × 110 = 0.2% となる。
  • さらにその 110 の範囲の5〜5.0001時間である確率は、およそ0.02%となる。

こうした例において『「特定の時間範囲内に死亡する確率」を「その範囲の長さ」で割った値』に着目すると、1時間につき 2 に定まることが分かる。例えば、5〜5.01時間の0.01時間の範囲でバクテリアが死亡する確率は0.02であり、確率 0.02 ÷ 0.01時間 = 2時間−1 である。この2時間−1(毎時200%)という量を、5時間時点での確率密度と呼ぶ。

従って、「バクテリアの寿命が5時間である確率」を問われた時、真の答えは0%であるが、より実用的には2時間−1dtであると言える。これは、無限小の時間範囲dt内で、バクテリアが死亡する確率である。例えば、丁度5時間〜5時間 + 1ナノ秒の寿命である確率は、2時間−1 × 1ナノ秒 ≈ 6 × 10−13 である。

これを確率密度関数 f を用いて、f(5時間)= 2時間−1 と表現する。f を任意の時間範囲(微小に限らない)で積分することで、当該時間範囲内でバクテリアの寿命が尽きる確率を求めることができる。

幾何分布(geometric distribution) - Wikipedia

離散確率分布で、次の2通りの定義がある。

  • ベルヌーイ試行を繰り返して初めて成功させるまでの試行回数 X の分布。台は {1, 2, 3, …}.
  • ベルヌーイ試行を繰り返して初めて成功させるまでに失敗した回数 Y = X − 1 の分布。台は {0, 1, 2, 3, …}.

問題とする事柄によってこれら2つの幾何分布から都合の良い方を選ぶ。混同を避けるために幾何分布について言及するときは定義を明らかにするのが賢明である。しかし多くの場合前者(X の分布)を指す。

確率質量関数失敗率が0に向けて収束していく

f:id:ochimusha01:20190503120201p:plain

積分布関数成功率が1に向けて収束していく

f:id:ochimusha01:20190503120224p:plain

 積分布関数

今度は何台観測すれば90%以上の確率で17の倍数を見つけることができるのかについて考えてみたい。つまりk台目に初めて観測するのではなく,k台目までに観測できる確率を求める。

f:id:ochimusha01:20190503120400j:plain
①累積分布関数は難しいことを考えずとも求めることができる.k回目までの試行で「一度も観測されない」確率を1から引けばよい.すなわちF(k;p)=1−(1−p)^kで求めることができる。

#統計言語Rでの検証例
f0<-function(p,k){1-(1-p)^k}
a<-1/17
f1<-function(k){1-(1-a)^k}
#グラフ化してみる。
plot(f1, xlim=c(0,100),ylim=c(0.0,1.0),lty =1,main="Cumulative Distribution Function", xlab="k", ylab="F(k:1/17)")
#90%を超えてくるのはどうやらk=40前後
abline(h=0.9)
f:id:ochimusha01:20190503105543j:plain

②実際に計算してみると90%の確率で17の倍数を発見出来るのは観測回数38回以上である。

#統計言語Rでの検証例
f0<-function(p,k){1-(1-p)^k}
#実際に計算してみる
f0(1/17,35)
[1] 0.8801916
f0(1/17,36)
[1] 0.8872392
f0(1/17,37)
[1] 0.8938722
f0(1/17,38)
[1] 0.900115
f0(1/17,39)
[1] 0.9059906
f0(1/17,40)
[1] 0.9115205

これは確率密度関数ではなく「積分布関数」である。

累積分布関数(CDF=Cumulative Distribution Function, )あるいは分布関数(distribution function) - Wikipedia

確率論において、実数値確率変数 X が x 以下になる確率の関数のこと。広義単調増加関数であり、右連続関数でもある。

指数関数の累積分布関数

f:id:ochimusha01:20190503111827p:plain

正規分布関数の累積分布関数

f:id:ochimusha01:20190503111852p:plain
連続確率分布では、負の無限大から x まで確率密度関数を定積分した物。同時確率分布でも条件付き確率分布でも定義される。

オイラーの定理」との対応付け

F(n;1/n)=1−(1−1/n)^nの確率は0.5より大きい。というより0.6を超える?

  • 上掲の「17の倍数であるナンバープレートを見つける確率確率1/17)」、17台目にして1台でも見つかる確率が0.6432138…

    #統計言語Rでの検証例
    f0<-function(p,k){1-(1-p)^k}
    #実際に計算してみる
    f0(1/17,11)
    [1] 0.4866877
    f0(1/17,12)
    [1] 0.5168825
    f0(1/17,13)
    [1] 0.5453012


    f0(1/17,17)
    [1] 0.6432138

  • それぞれの目が出る確率が1/6であるサイコロの話に変えると,6回振った場合、1の目が1回でも出る確率が0.665102…

    #統計言語Rでの検証例
    f0<-function(p,k){1-(1-p)^k}
    #実際に計算してみる
    f0(1/6,2)
    [1] 0.3055556
    f0(1/6,3)
    [1] 0.4212963
    f0(1/6,4)
    [1] 0.5177469

    f0(1/6,6)
    [1] 0.665102

この現象は「オイラーの定理」すなわち「x>0, a≠0の時、(1+a/x)^x<e^aが成立する」という考え方のの援用で説明出来る。 

①まずベルヌーイ試行の部分、すなわち第二項の(1−1/n)^nオイラーの定理で置き換える。a=−1と置くと(1+a/x)^x<e^a(1−1x)x<e−1に。

e^−1=0.3679…だから(1−1x)x<0.3679…、従ってF(n;1/n)=1−(1−1/n)n>1−0.3679=0.6321。確かに0.6を超えてくる。

これで確率が1/nであるような試行をn回繰り返したときに一度でも観測する確率は,nの値によらず0.6321より大きい事が証明された。なおnが小さいときの方がF(n;1/n)の値は大きく,nが大きくなると,0.6321に漸近していく模様 (n=10000のとき,0.632139).

なるほど「ベルヌーイ試行」と「オイラーの公式」はこういう関係にあるのか…