While writing an introductory chapter on Bayesian analysis (in French), I came by the issue of computing an HPD region when the posterior distribution is a Beta B(α,β) distribution… There is no analytic solution and hence I resorted to numerical resolution (provided here for α=117.5, β=115.5):
[sourcecode language=”r” gutter=”false”]
f=function(p){
# find the symmetric
g=function(x){return(x-p*((1-p)/(1-x))^(115.5/117.5))}
return(uniroot(g,c(.504,.99))$root)}
ff=function(alpha){
# find the coverage
g=function(x){return(x-p*((1-p)/(1-x))^(115.5/117.5))}
return(uniroot(g,c(.011,.49))$root)}
[/sourcecode]
and got the following return:
[sourcecode language=”r” gutter=”false”]
> ff(.95)
[1] 0.4504879
> f(ff(.95))
[1] 0.5580267
[/sourcecode]
which was enough for my simple book illustration… Since (.450,558) is then the HPD region at credible level 0.95.