2017-04-22 6 views
1

私の結果の事後確率を計算したいが、適切な関数が見つからない。ベイズの計算方法

これは私のコードですが、私はhere

prior = c(D = .0001, not.D = 1 - .0001) 
like.D = c(pos=.99, neg=.01) 
like.not.D = c(pos=.01, neg=.99) 
likelihood = rbind(D = like.D, not.D = like.not.D) 
data="pos" 
bayes(prior, likelihood, data) 

からそれを学んだしかし、私は「ベイズ」の機能を見つけることができないので、私は、誰かが私を助けたいです。

答えて

0

(リンク先の)機能のリンクが壊れているように見えるので、ページの著者に連絡する必要があります。この場合、計算するのは難しくありません。posterior = likelihood * priorです。だから、テーブルを乗算して計算してください。 gRainパッケージを使用して - (?病気)あなたはベイジアンネットワーク(>テスト病)として、それをフレーム可能性が別の方法として、必要な計算がDの確率であると思われる特定のPOS可能性(?テスト)

> joint = likelihood * prior 
> # marginalise to calculate posterior (need to normalise) 
> cs = colSums(joint) 
> joint[,"pos"]/cs["pos"] 
      D  not.D 
0.009803922 0.990196078 

> library(gRain) 
> d = cptable(~disease, values = prior, levels=names(prior)) 
> tt = cptable(~test+disease, values=t(likelihood), levels=colnames(likelihood)) 
> net = grain(compileCPT(list(d, tt))) 
> net2 = setEvi(net, evidence=list(test="pos")) 
> querygrain(net2) 
$disease 
disease 
      D  not.D 
0.009803922 0.990196078