2011-08-13
「Rで学ぶベイズ統計学入門」をNumpy, Scipyで書き換えるでござるの巻
Rのpdisc()関数をpythonで書いた。
参考”yuji_nkのメモ”
”ハリ・セルダンになりたくて”
from numpy import * def pdisc(p,prior, data): p1=[] s=data[0] f=data[1] p1 = p + 0.5*(p==0) - 0.5*(p==1) p1=array(p1) like= s * log(p1) + f * log(1.0-p1) for i in range(len(p1)): if (p[i] ==0 and s>0) or (p[i] == 1 and f > 0): like[i] = -999.0 like = exp(like - max(like)) product = like * prior post = product/sum(product) return post
以下は実行結果
>>> p=linspace(5,95,10)
>>> P=p*0.01
>>> prior=array([ 0.03460208, 0.1799308 , 0.27681661, 0.24913495, 0.15916955,
... 0.07266436, 0.02422145, 0.00346021, 0. , 0. ])
>>> data=array([11,16])
>>> pdisc(P,prior,data)
array([ 1.45171410e-08, 2.25602200e-03, 1.29134895e-01,
4.76790956e-01, 3.33834971e-01, 5.58782010e-02,
2.09829685e-03, 6.64274607e-06, 0.00000000e+00,
0.00000000e+00])
トラックバック - http://d.hatena.ne.jp/gerumanium/20110813/1313265687
リンク元
- 7 http://twitter.com/
- 3 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/gerumanium/20110701/1309535025&rct=j&q=project euler 解答 13&ei=nzRKTp6jKdD1mAW7i43mBw&usg=AFQjCNFFXsanMVKPCKonwguN5FbEEIs40A&sig2=09O
- 2 http://ezsch.ezweb.ne.jp/search/?sr=0101&query=カウンターの男性が「これからどちらへお出掛けですか?」と尋ねるのですんなり%8
- 1 http://d.hatena.ne.jp/diarylist?of=100&mode=rss&type=public
- 1 http://d.hatena.ne.jp/gerumanium
- 1 http://d.hatena.ne.jp/koiti_yano/searchdiary?word=R vars
- 1 http://ht.ly/5GmFS
- 1 http://search.yahoo.co.jp/search?p=ガンマ関数近似&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 1 http://twipple.jp/
- 1 http://www.google.co.jp/imgres?q=ガンマ関数&um=1&hl=ja&client=firefox-a&rls=org.mozilla:ja:official&tbm=isch&tbnid=8CKtlqwh4AgQnM:&imgrefurl=http://d.hatena.ne.jp/gerumanium/20110618/1308370946&docid=IN21PxGUsR00aM&w=160