ThinkStats (19)
P(E|H0) と P(E|Ha) の差について。
PValue という手続きに渡している model1 と model2 という引数が異なる点。
以下な形になっているのですが
# P(E|H0) peh0 = Test(root + '_deltas_cdf', actual1, actual2, pool, pool, iters, plot=True) # P(E|Ha) peha = Test(root + '_deltas_ha_cdf', actual1, actual2, model1, model2, iters)
pool は actual1 と actual2 をそのまま合わせたもの、と言えば良いのかどうか。
根拠は cumulative.MakeTables で以下。
pool = descriptive.PoolRecords(firsts, others)
pool は survey.Pregnancies.ExtendRecords に first と others を渡したものになっています。
self.records.extend(records)
リストの連結、なのか。対して model1 と model2 は actual1 と actual2 と同値、がデフォルトになっています。
と、いうことは
最初の peh0 なソレは対象なデータ全てから 1000 件リサンプルしてて、次の peha は first および others なソレから 1000 件リサンプル、ということになるのかどうか。
これがテキストの 99p にある
それぞれの分布から標本を取り出して、両者の組を 1000 組作ります。
ThinkStats より引用
この peha の値が先日実行した結果では 0.516 になってました。
(Mean, Var) of resampled deltas (0.08077549196467845, 0.003143562170784472) Tails (left, right, total): 0.001 0.515 0.516
そして Ha の事後確率を計算してるのが hypothesis.RunTest 手続きの以下の部分なのかどうか。
prior = 0.5 pe = prior*peha + (1-prior)*peh0 posterior = prior*peha / pe
先日実行した結果としては以下な出力。
Posterior 0.759941089838
どうなるのかな。まず
(+ (* 0.5 0.516) (* 0.5 0.163)) 0.3395
で、
(/ (* 0.5 0.516) 0.3395) 0.759941089837997
む、pe は P(E) になるんですね。テキストに出てる方法で P(E) を算出して Ha の事後確率を、事前確率 P(Ha) と効果が本当にあったときに E を観測する確率 P(Ha|E) をかけあわせて、E を観測する確率の P(E) で割ることで算出してるのかどうか。
別途
7 章にある他のソースも確認してみる方向にて。