计算r中beta分布下的中断区域

时间:2017-11-07 15:14:41

标签: r distribution beta-distribution

鉴于以下beta分布

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只包含该区域,而不是以前的区域。

2 个答案:

答案 0 :(得分:4)

中断之间的区域是两个端点的累积区域之间的差异。例如,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))

答案 1 :(得分:1)

对于这个问题,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])