[R] how to compute highest density interval?
Duncan Murdoch
murdoch at stats.uwo.ca
Sat Nov 24 14:50:18 CET 2007
On 24/11/2007 7:43 AM, gallon li wrote:
> Suppose i want to compute a 95% highest density for a beta distribution
> beta(a,b)
>
> the two end points x1 and x2 shoudl satisfy the following two equations:
>
> pbeta(x1,a,b)-pbeta(x2,a,b)=95%
>
> dbeta(x1,a,b)=dbeta(x2,a,b)
>
> Is there any fast way to compute x1 and x2 in R?
I don't know if it's "fast", but uniroot can do it:
densitydiff <- function(lower, a, b, level=0.95) {
plower <- pbeta(lower, a, b)
pupper <- plower + level
upper <- qbeta(pupper, a, b)
return(dbeta(lower, a, b) - dbeta(upper, a, b))
}
a <- 2
b <- 10
x2 <- uniroot(densitydiff, c(0, qbeta(0.05, a,b)), a=a, b=b)$root
(and then calculate the upper limit the same way densitydiff did).
Duncan Murdoch
More information about the R-help
mailing list