母集団の種類に関係なくランダムウォークが正規分布に従う
[mathjax] 統計のど真ん中。大数の法則と中心極限定理。 確かに奇跡的な美しさを感じる...。 同じ確率分布に従う独立な確率変数(X_1,X_2,cdots,X_n)について、(n)が大きければ (bar{X}=frac{X_1+X_2+cdots+X_n}{n})と置いたときに、(E(bar{X})=E(X_n))として扱ってよかった。 ((bar{X})は(mu)に確率収束した。(n)が次第に大きくなるにつれて(V(bar{X)})が0に収束した。) begin{eqnarray} lim_{n rightarrow infty}P(|X_n-mu|ge epsilon) rightarrow 0 end{eqnarray} なんとなく、最頻値を峰として(n)の増加に伴って峰が険しくなっていきそうだけど、 実際、(X_i)がどんな確率分布に従っていたとしても、 (S_n=X_1+X_2+cdots+X_n)は平均(nmu)、標準偏差(sqrt{n}sigma)の正規分布に従う(と考えて良い)らしい。 (bar{X})は平均(mu)、標準偏差(frac{sigma}{sqrt{n}})の正規分布に従う。 これが中心極限定理(Central limit theorem)。 (n)が大きくなったとき、ランダムウォーク(S_n)は平均(nmu)、標準偏差(sqrt{n}sigma)の分布が正規分布になる、 というのは以下のようにかけるらしい。 右辺は標準正規分布の確率密度関数の定積分。 左辺は既に正規分布であることを前提にしているような... begin{eqnarray} Pleft(a le frac{S_n -nmu}{sqrt{n}sigma} le bright) rightarrow int_a^b frac{1}{sqrt{2pi}}e^{-frac{x^2}{2}}dx end{eqnarray} (frac{S_n-nmu}{sqrt{n}sigma}=frac{n(frac{1}{n}S_n-mu)}{sqrt{n}sigma}=frac{bar{X}-mu}{frac{sigma}{sqrt{n}}}) みたいに変形すると、 以下のようにすることもできる。 正規分布を標準正規分布に変換するために(つまり平均=0、標準偏差=1にするために)、 標準偏差で割る(つまり標準偏差何個分か?)変換。 begin{eqnarray} Pleft(a le frac{bar{X}-mu}{frac{sigma}{sqrt{n}}} le b right) rightarrow int_a^b frac{1}{sqrt{2pi}}e^{-frac{x^2}{2}}dx end{eqnarray} 統計学入門に奇跡的な証明が書いてあるけど完全に写経になるので終わり。
統計的推測と大数の法則
[mathjax] 大数の法則は、標本数が大きくなったときに標本平均が母平均に確率収束することを数学的に表す。 begin{eqnarray} lim_{n rightarrow infty} P(|bar{X}-mu|ge epsilon) rightarrow 0 end{eqnarray} 母集団の確率分布がわかっていれば、母平均、母分散、標準偏差などの統計量は定義済みだから、 標本数が多いという仮定があれば、標本から母平均を見立てて計算し、 見立てた母平均が\"どの程度\"真の母平均に収束しているかを言うことで、 標本がどの程度母集団を言い当てているかを言うことができる。 1か0が起こるベルヌーイ試行を100回やって、1が80回、0が20回起こったとする。 この100回の標本は\"たまたま\"取得した結果だけれども、 これが無限集団の一部分だったとして、今回得られた標本から無限集団の平均を得られないか。 まず、確率変数(X_1,X_2,cdots,X_{100})は以下の確率分布に従う。 begin{eqnarray} P(X_i=1) &=& frac{80}{100} = 0.8 \\ P(X_i=0) &=& frac{20}{100} = 0.2 end{eqnarray} さらに確率変数(X_1,X_2,cdots,X_{100})は(p=0.8)のベルヌーイ分布に従う。 その平均は(p=0.8)、分散は(p(1-p)=0.16)。 これは\"たまたま\"取得した100個の標本を使って作った母平均と母分散。 では、この\"たまたま\"の母平均と母分散を使って、 (bar{X}=frac{X_1+X_2+cdots+X_n}{n})に関する(E(bar{X}))、(V(bar{X}))を計算する。 (E(bar{X})=mu)、(V(bar{X})=frac{sigma^2}{n})であるから、 (E(bar{X})=0.8)、(V(bar{X})=0.0016)、((sqrt{V(bar{X})}=0.04 )) 大数の法則(弱法則)により、\"たまたま\"の100回という試行において、 (bar{X})は0.8に確率収束し、その標準偏差は(0.04)であることがわかる。 試行回数を増やしていくと、標準偏差が0に収束する。 100回という試行回数において、1が起こる回数は平均80回で、上下に(pm 4% )ばらける。 無限大まで増やしていく途中、100回という区切りではこうだった、ということで、 さらに増やしていくと、上下の幅が(pm 4% )からさらに狭くなる。 全ての標本を得ないでも、手元の標本だけから、 上下の幅という曖昧さを残すことで推測できる。 大数の法則 (n)個の確率変数(X_1,X_2,cdots,X_n)が平均(mu)、分散(sigma^2)の分布に独立に従うとき、 和を(n)で割った平均の分布(bar{X}=frac{X_1+X_2+cdots+X_n}{n})について、平均、分散はそれぞれ、 begin{eqnarray} E(bar{X}) &=& frac{nmu}{n} = mu \\ V(bar{X}) &=& frac{nsigma^2}{n^2} = frac{sigma^2}{n} end{eqnarray} (n)の極限をとったとき、標本平均は母平均(mu)に収束し、分散はゼロに収束する。 begin{eqnarray} lim_{n rightarrow infty} E(bar{X}) &=& mu \\ lim_{n rightarrow infty} V(bar{X}) &=& 0 \\ end{eqnarray} (n)が少ない間は、(mu)の近傍に散らばって分布するが、 (n)が増えるに従って、(mu)の近傍の散らばりの範囲が狭くなっていく。 昔、写経した証明は以下。 だいぶ普通に読めるようになった。 [clink url=\"https://ikuty.com/2018/07/06/law_of_large_numbers/\"] 上で書いたように(V(bar{X})=frac{sigma^2}{n})だから、(sigma_n^2)は、(sigma_n^2=V(bar{X}_n)=frac{sigma^2}{n}) 以下のチェビシェフの不等式において、 begin{eqnarray} P(|X_n−mu|ge ksigma_n) &le& frac{1}{k^2} end{eqnarray} (ksigma_n=epsilon)とおく。(k=frac{epsilon}{sigma_n}=sqrt{n} frac{epsilon}{sigma}) だから、 begin{eqnarray} P(|X_n−mu|ge epsilon) &le& frac{sigma^2}{nepsilon^2} end{eqnarray} 極限を取ると、 begin{eqnarray} lim_{n rightarrow infty} P(|X_n−mu|≥epsilon) &=& lim_{n rightarrow infty }frac{1}{epsilon^2} cdot frac{sigma^2}{n} \\ &rightarrow& 0 end{eqnarray}
エレベーターの定員
[mathjax] 620kgまで積載できるエレベータ。定員は何人でしょうか..? ネガティブ思考の大家としては、 太っている人が乗ることを考えて少なめな方が...と常日頃思っていたのだけど、 案外、悪いことばかり考えるのも客観的でないことがわかる。 数を打つと、大きいもとと小さいものが打ち消しあう。 良いことと悪いことが打ち消しあって平均に収まる。 確率変数が大量((n)個)にあったとき、それらが全て同じ分布に独立に従うとして、 その分布の平均が(mu)、分散が(sigma^2)だとする。それらの平均、分散は、 begin{eqnarray} E(X_1) = E(X_2) = cdots = E(X_n) = mu \\ V(X_1) = V(X_2) = cdots = V(X_n) = sigma^2 \\ end{eqnarray} 和の平均、分散は、標準偏差は、 begin{eqnarray} E(X_1+X_2+cdots + X_n) = nmu \\ V(X_1+V_2+cdots + X_n) = nsigma^2 \\ s = sqrt{n} sigma end{eqnarray} 人間1人の体重が平均65.0kg、標準偏差が6.0kgだとすると、 9人の平均は人数に比例して580kg。人数の増加にしたがって順当に見積もりが増える。 どれぐらい上にマージンが必要かというと..標準偏差は(sqrt{9}*6=18.0)kg。 最大積載重量が600kgであったとしても(+1sigma)の範囲に収まる! 620kgあれば、(+2sigma)も収まる。9人はいける。 振れ幅は(sqrt{n})に比例する。 (n)が大きくなっても大して振れ幅は大きくならない。 ちなみに、法令上(建築基準法施行令第129条)は、 1人あたり65kgとして頭数で割るだけが決まっているそうで、 体重の振れ幅については結局謎のまま。 床面積あたりにするとキツキツになる模様。 http://www.mitsubishielectric.co.jp/elevator/inquiry/faq/category01/qa3.html 最大積載重量が実際のハードリミットでそこでブザーがなるんだから、 定員、というソフトリミットは目安でしかないんだな。
独立な確率変数の共分散がゼロであること
[mathjax] 共分散と相関係数の定義について過去に書いていた。 そもそも共分散が発生するのは、2つの確率変数が連動して動くから。 2つの確率変数が独立している場合は、共分散、相関係数共にゼロ。 共分散の定義 まず、共分散、相関係数の定義はこの通り。 2次元のデータ((x_1,y_1),(x_2,y_2),cdots,(x_n,y_n))が与えられた場合、 変数(x)と(y)の相関係数(r_{xy})は、それぞれの標準偏差(S_x,S_y)と、共分散(C_{xy})を使って以下となる。 begin{eqnarray} r_{xy} &=& frac{C_{xy}}{S_x S_y} \\ &=& frac{sum_{i=1}^n(x_i-bar{x})(y_i-bar{y})/n}{sqrt{sum_{i=1}^n{(x_i-bar{x})^2}/n} sqrt{sum_{i=1}^n{(y_i-bar{y})^2}/n}} \\ &=& frac{sum_{i=1}^n(x_i-bar{x})(y_i-bar{y})}{sqrt{sum_{i=1}^n{(x_i-bar{x})^2}} sqrt{sum_{i=1}^n{(y_i-bar{y})^2}}} \\ end{eqnarray} [clink url=\"https://ikuty.com/2018/08/13/correlation_coefficient/\"] [arst_adsense slotnumber=\"1\"] そもそもの共分散 確率変数(X),(Y)があったとする。それぞれの期待値は(E(X)),(E(Y))、分散は(V(X),V(Y))。 定義通りに(V(X+Y))を式展開していくと以下の通りになる。 begin{eqnarray} V(X+Y) &=& E(((X+Y)-mu_{X+Y})^2) \\ &=& E((X+Y-mu_x-mu_y)^2) \\ &=& E(((X-mu_x) + (Y-mu_y))^2) \\ &=& E((X-mu_x)^2) + E((Y-mu_y)^2) + 2E((X-mu_x)(Y-mu_y)) \\ &=& V(X) + V(Y) + 2E((X-mu_x)(Y-mu_y)) \\ &=& V(X) + V(Y) + 2C_{xy} end{eqnarray} ここで、(C_{xy}=2E((X-mu_x)(Y-mu_y)))を共分散としている。 (V(X+Y))は、(V(X))と(V(Y))の和に(C_{xy})で補正をかけた値になっている。 では、(X)と(Y)が独立であるとなぜ(C_{xy}=0)になるのか。 (C_{xy})を式変形していくと以下のようになるが、 begin{eqnarray} frac{1}{2} C_{xy} &=& E((X-mu_x)(Y-mu_y)) \\ &=& E(XY)-mu_yE(X)-mu_xE(Y) +mu_x mu_y \\ &=& E(XY) -mu_x mu_y - mu_x mu_y + mu_x mu_y \\ end{eqnarray} (X)と(Y)が独立であると(E(XY)=E(X)E(Y)=mu_x mu_u)となるから、 begin{eqnarray} frac{1}{2} C_{xy} &=& E(XY) -mu_x mu_y - mu_x mu_y + mu_x mu_y \\ &=& mu_x mu_y-mu_x mu_y - mu_x mu_y + mu_x mu_y \\ &=& 0 end{eqnarray} こうやって、独立であるなら共分散がゼロといえる。 [arst_adsense slotnumber=\"1\"]
同時確率分布と周辺確率分布の関係と独立性の定義
[mathjax] 確率変数XとYが微妙に連動して動くときに何が起こっているのか。 状態空間モデルとベイズ統計で理解が必須なので、全くわからないながらもまとめてみる。 2次元確率分布の共分散と相関係数は次回で、まずは確率変数の独立性について。 互いに独立 40近いおっさんが久々に数式をこねくりまわして、\"互いに独立\"の定義を読むところまで来た。 たぶん、厳密ではないんだろうけども...。 2つの確率変数X,Yがあったとして、X,Yの2変数からなる確率分布を検討する。 (X=x)であり同時に(Y=y)である確率(P(X=x,Y=y)=f(x,y))とする。 (f(x,y))の読み方は(x,y)の同時確率分布(joint probability distribution)。 確率分布なので、全部足したら1になる。 begin{eqnarray} sum_x sum_y f(x,y) = 1, f(x,y) geq 0 end{eqnarray} X,Yという2次元の確率変数を使ったとして、それが同時に起こる事象Aも2次元となる。 ((X,Y)という全ての集合のうち、特別な事象Aを選んだとしてもAは2次元。) begin{eqnarray} P((X,Y) in A) = sum _A sum f(x,y) end{eqnarray} X,Yを連続値としたとき、確率を定義できる空間(2次元ユークリッド空間(S)...)において、 X,Yが同時に起こる特別な事象A((S)の部分集合)で定義できる。 (大学1年くらいにやるやつだ...) begin{eqnarray} iint_S f(x,y)dydx = 1, f(x,y) geq 0 \\ P((X,Y) in A) = iint_A f(x,y)dydx end{eqnarray} 2変数の片方について合計、または積分した分布を検討する。 この分布の呼び方は周辺確率分布(marginal probability distribution)。 begin{eqnarray} g(x) &=& sum_y f(x,y) \\ h(x) &=& sum_x f(x,y) end{eqnarray} [arst_adsense slotnumber=\"1\"] ここからが「互いに独立」の定義の読み方。 2変数関数を片方の変数で積分して1変数にする方向の操作は可能で、 そうやって同時確率分布から周辺確率分布を求められる。 離散型の場合はマトリクスの縦・横いずれかを固定してループして足す操作。 では、それぞれの周辺分布関数の値から同時確率分布の値を求められるか?? この操作は出来る場合と出来ない場合がある。 出来る例は(既に互いに独立であることを意識しつつも)2つのサイコロ振り。 サイコロ1の目(X_1)とサイコロ2の目(X_2)について、同時確率分布、周辺確率分布が以下であるとする。 123456(h(x)) 1(frac{1}{36})(frac{1}{36})(frac{1}{36})<td(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{6}) 2(frac{1}{36})(frac{1}{36})(frac{1}{36})<td(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{6}) 3(frac{1}{36})(frac{1}{36})(frac{1}{36})<td(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{6}) 4(frac{1}{36})(frac{1}{36})(frac{1}{36})<td(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{6}) 5(frac{1}{36})(frac{1}{36})(frac{1}{36})<td(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{6}) 6(frac{1}{36})(frac{1}{36})(frac{1}{36})<td(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{36})(frac{1}{6}) (g(x))(frac{1}{6})(frac{1}{6})(frac{1}{6})(frac{1}{6})(frac{1}{6})(frac{1}{6})1 周辺確率の積が同時確率の積にならないケースがない。 かなり稀なケース。 出来ない例は、上記の奇跡的なケース以外の全てで、 以下の通り、周辺確率を掛け合わせても同時確率にならない。 123(h(x)) 1(frac{1}{8})(frac{2}{8})(frac{3}{8})(frac{6}{8}) 20(frac{1}{8})0(frac{1}{8}) 3(frac{1}{8})00(frac{1}{8}) (g(x))(frac{2}{8})(frac{3}{8})(frac{3}{8})1 同時確率が全て(frac{1}{9})であれば、周辺確率の積から同時確率の積を計算できるがそうでない。 (frac{1}{9})と比較して大きい同時確率、小さい同時確率が存在するということは、 (X_1,X_2)が協調して動く傾向の度合いが効いている。 日本工業規格の定義は、 「互いに独立」の必要十分条件は、「周辺分布関数の積が同時分布関数になること」。 [arst_adsense slotnumber=\"1\"]
幾何分布と「過去の結果からは何もわからない話」
[mathjax] いつか起こる大地震がもし昨日起きたとしたら明日起こる確率は下がるのか? 飛行機が昨日落ちたとしたらしばらくは飛行機は落ちないのか? うまくいかない人生が今日またうまくいかなかったとして将来うまくいかない確率は下がるのか? 起こるか起こらないかの確率が変わらないのであれば、将来は過去に影響されないらしい。 影響されるかどうか、と聞かれるとされない、と答えるだろうけど、それを説明することができるらしい。 そんな無記憶性の件読んでみたのでまとめてみる。 統計学入門とこちらを参考にさせて頂きました。 幾何分布 幾何分布 二項分布、ポアソン分布は(n)回の試行のうち(x)回事象(A)が発生したときを話題にしていた。 前提を少し変えて、予め試行する回数を決めないで、 (x)回目の試行で初めて事象(A)が発生した、 という話をすることもできる様子。 確率変数(x)が等間隔に並ぶ時刻であるとすることで、 事象(A)が発生するまでの待ち時間に関する確率分布を作れる。 (x)回目の試行で初めて事象(A)が起こった、ということを、 (x-1)回事象(bar{A})が起こり、次に事象(A)が起きたと考える。 事象(A)の生起確率を(p)、事象(bar{A})の生起確率を(q)とすると、 その確率は以下のようになる。 begin{eqnarray} f(x) = p cdot q^{x-1} end{eqnarray} (x)の増加1回に対して(q)を1回かける構造で、公比(q)の等比数列になっている。 等比数列って英語でgeometric seriesって言うもんだから、幾何分布っていう名前がついてる様子。 (f(x))の確率変数(x)は事象(A)が発生するまでの試行回数(時間)である、と読む様子。 では確率変数(X)が幾何分布に従うとき、期待値はどうかというと(frac{1}{p})となる。 確率の以下の読み方から、(x)回の試行に平均して(frac{1}{p})回かかる、というのは妥当に見える。 事象(A)の生起確率(p)の読み方について、その逆数(frac{1}{p})は、事象(A)が起こるまでの試行回数と読む。 (p)回の試行で初めて事象(A)が起こった、というシーンで事象(A)の生起確率を(p)と置いているので..。 期待値 幾何分布の期待値は(frac{1}{p})。ベルヌーイ試行の確率が(p)であるならば、平均(frac{1}{p})回で事象が起こる。 分散は(frac{1-p}{p^2})。期待値の証明は以下の通り。へぇ。 begin{eqnarray} E(X) &=& sum_x x cdot f(x) \\ &=& sum_x x cdot p q^{x-1} end{eqnarray} (E(X)がfrac{1}{p})であることを示したい。 恒等式を使ってやる奴ではなく、愚直にやる奴を書く。 まず、(q=1-p)として(E(X))を変形しておいてスタート。 begin{eqnarray} E(X) &=& sum_x x cdot p (1-p)^{x-1} \\ &=& p sum_x x cdot (1-p)^{x-1} end{eqnarray} 右辺を生み出すために、(frac{1}{x-1})のテイラー展開を持ち出す。 begin{eqnarray} frac{1}{1-x} &=& 1 + x + x^2 + cdots \\ &=& sum_{k=0}^{infty} x^k end{eqnarray} 左辺を(x)で微分すると以下の通り。 begin{eqnarray} left( frac{1}{1-x} right) frac{d}{dx} = frac{1}{(1-x)^2} end{eqnarray} 右辺を(x)で微分すると以下の通り。 begin{eqnarray} sum_{k=0}^{infty} x^k frac{d}{dx} = sum_{k=1}^{infty} k x^{k-1} end{eqnarray} なので、 begin{eqnarray} frac{1}{(1-x)^2} = sum_{k=1}^{infty} k x^{k-1} end{eqnarray} (x=1-p)として式変形すると、 begin{eqnarray} frac{1}{p^2} = sum_{k=1}^{infty} k (1-p)^{k-1} end{eqnarray} (E(X))にこれらを代入すると、 begin{eqnarray} E(X) &=& p sum_x x cdot (1-p)^{x-1} \\ &=& p cdot frac{1}{p^2} \\ &=& frac{1}{p} end{eqnarray} 本当に(frac{1}{p})になった。 両辺を微分したものが等しいって、なんでだっけ? 無記憶性 どうも、世の中には(n-1)回連続して失敗して(n)回目で初めて成功することを言っているものと、 (n)回連続して失敗して、(n+1)回目で初めて成功することを言っているものがある。 期待値も分散も若干違うものになる。 ここからは(n)回の失敗に続いて(n+1)回目で初めて成功するケースに切り替える。 その時の確率を(P(X=n))とする。で、失敗が(n)回以上連続して起こる確率(P(Xgeq n))を考える。 begin{eqnarray} P(X geq n) &=& P(X=n) + P(X=n+1) + P(X=n+2) + cdots \\ &=& p(1-p)^n + p(1-p)^{n+1} + p(1-p)^{n+2} + cdots \\ &=& p(1-p) left( 1 + (1-p)^1 + (1-p)^2 + cdots right) \\ &=& p(1-p) sum_{k=1}^{infty} (1-p)^{k-1} end{eqnarray} 途中の無限級数は(frac{1}{1-x})の級数展開になっていて、 以下みたいになる。 begin{eqnarray} P(X geq n) &=& p(1-p)^n sum_{k=1}^{infty} (1-p)^{k-1} \\ &=& p(1-p)^n frac{1}{1-(1-p)} \\ &=& p(1-p)^n frac{1}{p} \\ &=& (1-p)^n end{eqnarray} (n)回連続して失敗した上で、さらに連続して(k)回の失敗を重ねる確率を考える。 (n)回連続して失敗する確率は(P(Xgeq n))。 この条件の上でさらに(k)回失敗を重ねる確率は条件付き確率として(P(Xgeq n+k | X geq n))。 条件付き確率の定義と乗法定理から式を展開していく。(ここが難しかった...) begin{eqnarray} P(Xgeq n+k | X geq n) &=& frac{P((X geq n+k)cap (X geq n) )}{P(X geq n)} \\ &=& frac{P(X geq n+k)}{P(X geq n)} \\ &=& frac{(1-p)^{n+k}}{(1-p)^n} \\ &=& (1-p)^k \\ &=& P(X=k) end{eqnarray} ということで、以下が成り立つことがわかる。 begin{eqnarray} P(Xgeq n+k | X geq n) &=& P(X=k) end{eqnarray} よーく見てみると、(n)回連続して失敗した後に(k)回連続して失敗する確率と、 (n)回の失敗無しに、最初から(k)回連続して失敗する確率が同じである、と言っている。 凄まじいことに、(n)回連続して失敗することは、次の(k)回の失敗に全く影響を及ぼさない、と言っている。 何回失敗しようと次に失敗する確率はこれまでの失敗に影響されない。 つまり失敗する確率は過去の影響を受けない。 美しすぎる感じがする。
ベイズの定理と解法例
[mathjax] ベイズの定理の例 以前、確率の乗法定理と共にベイズの定理の導出をおこなった。 [clink url=\"https://ikuty.com/2018/09/12/conditional_probability/\"] ちょっと慣れておきたいので、ベイズの定理を持ち出して問題を解いてみる。 18歳未満の子供が病気Dに罹患する確率は10%であるとする。 病気Dの検査法において、病気Dに罹患している子供が正しく陽性と判定される確率は96%、 誤って陰性と判定される確率は4%である。 逆に、病気Dに罹患していない子供が正しく陰性と判定される確率は98%、 誤って陽性と判定される確率は2%である。 ある子供が病気Dの検査を受けたときの結果が「陽性」であったとき、 実際に病気Dに罹患している確率を求めよ。 計算不可能な条件付き確率を、計算可能な条件付き確率を使って式変形するのがベイズの定理。 病気Dに罹患しているという事象を(D_1)、罹患していないという事象を(D_2)とおく。 また、検査で陽性であるという事象を(A)とおく。 提示されている(既にわかっている)陽性、偽陽性、陰性、偽陰性の条件は、 (P(A|D_1)=0.96)、(P(bar{A}|D_1)=0.04)、(P(bar{A}|D_2)=0.98)、(P(A|D_2)=0.02) また、病気Dに罹患する確率は(P(D_1)=0.1)。 検査を受けたとき陽性であるとは、事象(D_1)が起こった後事象Aが起こった、ということ。 その確率を条件付き確率を使って(P(D_1|A))と書く。 ベイズの定理 ここでベイスの定理。 (H_1,H_2,⋯,H_n)という原因の結果(A)が得られた、という条件。 普通は原因(H)が発生した上で結果(A)が得られる確率(P(A|H))を直接計算することができるが、 結果が得られた上で原因が得られる確率(P(H|A))は直接計算できない。 直接計算できる(P(A|H))を直接計算できない(P(H|A))に変換するのがベイズの定理。 begin{eqnarray} P(H_i|A) = frac{P(H_i)⋅P(A|H_i)}{sum P(H_j)⋅P(A|H_j)} end{eqnarray} なお、確率の乗法定理は以下の通りである。 begin{eqnarray} P(Acap B) = P(B)cdot P(A|B) end{eqnarray} 今回、罹患していて陽性と判定される確率は、( P(D_1)P(A|D_1) )、 罹患していないで陽性と判定される確率は、(P(D_2)P(A|D_2))。 ベイズの定理において、分母は、結果(A)が起こる全ての確率の和。 つまり、今回の例では検査で陽性となる全ての確率( P(D_1)P(A|D_1)+P(D_2)P(A|D_2))。 分子は、病気(D)に罹患している場合に陽性となる確率(P(D_1)P(A|D_1))。 begin{eqnarray} P(D_1|A) &=& frac{P(D_1)P(A|D_1)}{ P(D_1)P(A|D_1)+P(D_2)P(A|D_2)} \\ &=& frac{0.1 cdot 0.96}{0.1 cdot 0.96 + 0.9 cdot 0.02 } \\ &=& 0.842 end{eqnarray} こつ まぁ、与えられた問題文を良く読んで、求めたい条件付き確率、与えられている条件付き確率を抜き出す ところがポイントだろうか。ベイズの定理自体は、分母の意味と分子の意味を理解していれば、 導出できるはず。その際、確率の乗法定理を知らないと導出できない。
ポアソン分布とLPからのCVR
[mathjax] 二項分布において、(n)が極めて大きく、(p)が極めて小さくなる現実的な事象はとても多いとされる。 例えば、交通事故件数、破産件数、火災件数、砲弾命中数、遺伝子の突然変異数など。 あるECサイトにおけるLPへの到達を(n)、そのうちコンバージョンする確率を(p)などとしたとき。 (実際には、アクセス頻度が一定でないので、単純なポアソン分布でモデル化する訳ではないらしい。 ここでは単純化してアクセス頻度が一定であるという仮定をする) 超幾何分布から二項分布、そしてポアソン分布まで地続きで理解するとわかりやすい。 このケースで二項分布の式を計算しようとすると、 例えば(N=1000)、(p=0.003)、(x=3)であるとしたとき、 (例えば、1000回のPVがあり、3回コンバージョンした、コンバージョン確率は0.3%である、という条件) 数値計算上の誤差により演算が繊細で現実的でない。 begin{eqnarray} f(x) &=& {}_n C_x p^x (1-p)^{n-x} \\ &=& {}_{1000} C_3 0.003^3 (0.997)^{997} end{eqnarray} ここで、(n rightarrow infty, p rightarrow 0 )という極限を考えたとき、(np rightarrow lambda)となることを考える。 つまり、二項分布の式において以下が成り立つ。 begin{eqnarray} {}_n C_x p^x (1-p)^{n-x} rightarrow e^{-lambda} lambda^x /x! end{eqnarray} 右式が確率分布であることは指数関数のマクローリン展開を使って証明できる。 (これも無茶苦茶に鮮やかで気持ちがよい..) begin{eqnarray} sum_{x} f(x ) &=& sum_{x} e^{-lambda} lambda^x /x! \\ &=& e^{-lambda} sum_{x} lambda^x /x! \\ &=& e^{-lambda} cdot e^{lambda} \\ &=& 1 end{eqnarray} ポアソン分布において、期待値、分散は以下の通り。 奇跡的に、期待値も分散も同じ(lambda)となる。 begin{eqnarray} E(X) &=& lambda \\ V(X) &=& lambda end{eqnarray} ポアソン分布の分布図 平均、分散共に(lambda)ということで、分布は定数(lambda)だけによって決まる。 以下、(lambda)をばらけさせてExcelでプロットしてみた。 また、(lambda=3)における、確率密度関数と累積分布関数を同一軸でプロットしてみる。 (lambda=3)というのは、最初の(N=1000)、(p=0.003)という条件下である。 平均は(lambda=3)であるから、3回コンバージョンする確率が最も大きく、 確率密度関数は右に歪んでいて、以外と3回以上コンバージョンする確率の減少は緩やか。
二項分布と例
[mathjax] 超幾何分布においてNの無限大の極限を取った時に二項分布になった。 確率分布の理解はデータの数え方のケーススタディだと思うのでまとめてみる。 二項分布になるデータの発生の仕方は多いと書いてある。 二項分布 起こり得る結果が2種類に限定される事象を(n)回繰り返すとする。 (n)回のうち(x)回が結果A、(n-x)回が結果Bであるとき、 その組み合わせになる確率は以下の通り。 begin{eqnarray} f(x) = {}_n C_x p^x (1-p)^{n-x} end{eqnarray} ある事象が起こったとき、それを元に戻さないで次を行う。 確率(p)が(x)回、確率(1-p)が(n-x)回、(n)回のうち(x)回の組み合わせの数をかけている。 5回中1回ということは、1回目、2回目、3回目、4回目、5回目の計5通りで、それは({}_5 C_1)回。 n回中x回ということは({}_n C_x)回という意味。 ちなみに、以下の二項定理を使って二項分布が確率分布であることを証明する。 begin{eqnarray} (a+b)^n &=& {}_n C_0 a^0 b^n + {}n C_1 a^1 b^{n-2}+ cdots + {}_n C_k a^k b^{n-k} + cdots + {}n C_{n-1}a^{n-1}b + {}_n C_n a^n b^0 \\ &=& sum_{k=0}^n {}_n C_k a^k b^{n-k} end{eqnarray} 全部足す式を二項定理を使って変形すると1になる。なので二項分布は確率分布。 begin{eqnarray} sum_x f(x ) &=& sum_x {}_n C_x p^x (1-p)^{n-x}\\ &=& sum_x {}_n C_x p^x q^{n-x} \\ &=& (p+q)^n \\ &=& 1^n \\ &=& 1 end{eqnarray} 確率変数(X)が二項分布に従っているのであれば、期待値、分散は以下の通り。 begin{eqnarray} E(X) &=& np \\ V(X) &=& np(1-p) end{eqnarray} 二項分布の例 比較的簡単なので統計検定で頻出。 以下の問題がたぶん最もミニマル(二項分布の式に頼る必要もないけど)。 コインを6回投げる試行を行う。 4回表が出る確率を求めよ。 表が出る確率、裏が出る確率、共に(0.5)。 6回のうち4回表が出る場合の数は({}_6 C_4)回、6回のうち2回裏が出る場合の同じで15回。 ({}_6 C_4 0.5^4 0.5^2 = 0.234 ) コインを6回投げる試行を行う。 表が出る期待値を求めよ。 (E(X) = np = 6 cdot 0.5 = 3) つまり、コインを6回投げると平均して3回表が出る...、っていう当たり前。 コインを6回投げる試行を行う。 表が出る標準偏差を求めよ。 (sqrt{V(X)} = sqrt{n p (1-p} = sqrt{6 cdot 0.5 cdot 0.5} = 1.22 ) 95%信頼区間は? 標準偏差が出てきたところで、最初のころにやった95%信頼区間を思い出してみる。 二項分布であれ、中心極限定理により正規分布に近似できる。 begin{eqnarray} B(n,p) = N(np,np(1-p)) end{eqnarray} この正規分布について標準正規分布への変換を考える。 begin{eqnarray} Z = frac{X-E(X)}{sigma} = frac{X-np}{sqrt{np(1-p)}} end{eqnarray} Z得点を使って95%信頼区間は以下の通り求められる。 begin{eqnarray} -1.96 le Z le 1.96 \\ -1.96 le frac{X-3}{1.22} le 1.96 \\ -1.96 * 1.22 +3 le X le 1.96 * 1.22 + 3 \\ 0.60 le X le 5.40 end{eqnarray} 95%信頼区間は上記の通り。従って、コインを6回投げたとき、表の出る回数の95%は0.60から5.40の間であると言える。
ブロック操作系まとめ
全然網羅できてないけどブロック操作系まとめ。 [arst_toc tag=\"h3\"] スコープを作ってコレクションを操作できるのはそうだとして、 ブロック内の評価値をまとめたものがブロックの評価結果となるところがポイント。 コードがぐっと短くなって気分が良い。 基本的なeach 最も基本的な配列、ハッシュのeach。配列、ハッシュをレシーバとしてeachメソッドを呼び出す。 評価結果はレシーバ自身。 arrays = [100, 200, 300] rets = arrays.each do |value| p value end # 100 # 200 # 300 # [100, 200, 300] p rets # [100, 200, 300] hashes = {a1:\"a1\", a2:\"a2\", a3:\"a3\"} rets = hashed.each do |value| p value end # [a1:\"a1\", a2:\"a2\", a3:\"a3\"] # {a1: \"a2\"} # {a2: \"a2\"} # {a3: \"a3\"} # [a1:\"a1\", a2:\"a2\", a3:\"a3\"} p rets # [a1:\"a1\", a2:\"a2\", a3:\"a3\"} each_with_index 配列の順序数を付けることができる。 arrays = [100, 200, 300] arrays.each_with_index do |value,index| p \"#{index}_#{value}\" end # \"0_100\" # \"1_200\" # \"2_300\" # [100, 200, 300] each_key, each_value ハッシュのキーのみ、値のみをブロックで使う場合は以下。 キー、値の両方を使える制限無しの状態でどちらかを使う、というのではなく、 初めからキー、値のどちらを使うかを宣言して、それだけを使うという拘りビリティ。 hashes = {a1:\"a1\", a2:\"a2\", a3:\"a3\"} rets = hashes.each_key do |key| p key end # :a1 # :a2 # :a3 # {:a1=>\"a1\", :a2=>\"a2\", :a3=>\"a3\"} rets2 = hashes.each_value do |value| p value end # \"a1\" # \"a2\" # \"a3\" # {:a1=>\"a1\", :a2=>\"a2\", :a3=>\"a3\"} upto, downto ループを回して、制御変数をインクリメント、デクリメントするケースには専用の構文を使う。 Rubyにはインクリメント演算子は無いし、腐ってもforの外で用意した変数に対して+1を自己代入したりしない。 何より、英語の構文と同じところが気持ちが良い。 100.upto(103) do |i| p i end # 100,101,102,103 103.downto(100) do |j| p j end # 103,102,101,100 times n回の構文,times。 3.times do |i| p i end # 0,1,2 map mapは、レシーバの各要素分繰り返す。ブロックの評価値は各要素に対応する値となり、新たな配列が返る。 eachだと、評価結果がレシーバ自身であるためレシーバを加工して返す用途に使えないが、 mapを使うと、ブロックの応答として加工済みの配列を返せるので、制御構文がグッと短くなって気持ちが良い。 あくまでもレシーバの個数繰り返すので、ブロックでnilを返すと、評価結果の該当要素がnilになる。 arrays = [1, 2, 3] rets = arrays.map do |i| \"values_#{i}\" end [\"values_1\", \"values_2\", \"values_3\"] rets2 = arrays.map do |i| \"values_#{i}\" if i <3 end ["values_1", "values_2", nil] ただ、順序数付きのmap_with_indexはこのような動きをしない。 arrays = [1, 2, 3] rets = arrays.map_with_index do |index,value| \"#{index}_#{value}\" end p rets # {評価結果なし} select 前述の通り、mapはレシーバの個数分繰り返すため、ブロック内の最終評価値がnilとなった場合、 評価値の該当要素がnilになる。 そうではなく、nilでない評価結果をまとめて返したい場合はselectを使う。 rets3 = arrays.select do |i| \"values_#{i}\" if i <3 end ["values_1", "values_2"] まだまだ全然網羅できてないけど、とりあえず終了。