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):
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)}
and got the following return:
> ff(.95) [1] 0.4504879 > f(ff(.95)) [1] 0.5580267
which was enough for my simple book illustration… Since (.450,558) is then the HPD region at credible level 0.95.