【问题标题】:Calculate Areas of breaks under a beta distribution in r计算 r 中 beta 分布下的中断面积
【发布时间】:2018-04-20 01:19:00
【问题描述】:

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

【问题讨论】:

    标签: r distribution beta-distribution


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      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])
      

      【讨论】:

        猜你喜欢
        • 2018-03-04
        • 2012-08-15
        • 2022-01-23
        • 2014-03-01
        • 1970-01-01
        • 2015-04-22
        • 2015-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多