计算β分布下的断裂面积



给定以下贝塔分布

x <- seq(0,1,length=100)
db <- dbeta(x, .25, .43)
ggplot() + geom_line(aes(x,db))+scale_x_continuous(breaks = seq(0,1,by=.1))

我怎样才能找到0到1之间间隔0.1的区域。不是累积面积,只是特定休息的面积。例如,0.2到0.3的间断将仅具有包含该区域的区域,而不具有先前的区域。

断点之间的面积是两个端点的累积面积之差。例如,0和0.1之间的区域是

pbeta(0.1, 0.25,0.43) - pbeta(0, 0.25,0.43)

要获得所有区域,只需将其应用于中断列表

breaks = seq(0,1,by=.1)
sapply(1:10, function(i) pbeta(breaks[i+1], 0.25,0.43) - pbeta(breaks[i], 0.25,0.43))

G5w的答案对这个问题更好。一般来说,尽管您可以使用integrate来获得特定间隔的函数下的面积。例如,对于介于0.2和0.3之间的dbeta,可以使用

integrate(dbeta, .2, .3, shape1=.25, shape2=.43)
0.05982106 with absolute error < 6.6e-16

要获得宽度为0.1(从0到1)的每个间隔的值,请将其放入sapply中。

myAreas <- sapply(seq(0, .9, .1),
function(x) integrate(dbeta, x, x+.1, shape1=.25, shape2=.43)[[1]])

这导致了这些值的向量

并将结果与G5W的建议进行比较。

all.equal(pbeta(0.1, 0.25,0.43) - pbeta(0, 0.25,0.43), myAreas[1])

最新更新