1

给定以下 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 的中断将仅包含该区域,而不包含先前的区域。

4

2 回答 2

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))
于 2017-11-07T15:28:20.513 回答
1

G5w 的回答更适合这个问题。通常,尽管您可以使用integrate来获取特定间隔下的功能区域。例如,对于dbeta0.2 和 0.3 之间,您可以使用

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])
于 2017-11-07T15:33:56.397 回答