【问题标题】:How to do high dimensional integration in R如何在R中进行高维整合
【发布时间】:2020-06-23 17:06:13
【问题描述】:

我正在尝试集成一个高维集成: ∫∏pj(1-pj)f(pj)dpj,其中 j∈1,...,5。 f(pj)是pj的分布函数,pj~beta(0.3,0.7) 有这种集成的 R 包吗?

【问题讨论】:

  • 集成的界限是什么?
  • 所有pj属于[0,1]

标签: r multidimensional-array integration


【解决方案1】:

被积函数是“可分离的”:它是p1的一个函数的乘积,一个函数 p2,...,p5 的函数。

此外,积分的界限是恒定的。因此多重​​积分 乘积的乘积等于单积分的乘积:

int_0^1 int_0^1 int_0^1 int_0^1 int_0^1 product( pi(1-pi)f(pi) ) dp1 dp2 dp3 dp4 dp5
 = product ( int_0^1 p(1-p)f(p) dp )

因此,您可以计算单个积分int_0^1 p(1-p)f(p) dp 并提高 5 次幂。

然而,虽然这在数学上是正确的,但这会“累积” 数值积分。 然后,在数值上,最好使用多维积分。为此, 使用cubature 包。

但请注意,您以“封闭形式”计算此积分。事实上,f 是 带有参数ab 的Beta 分布的pdf。一个有 f(p) = g_{a,b}(p) / beta(a,b)int_0^1 g_{a,b}(p) dp = beta(a,b)。 很容易看出p(1-p)g_{a,b}(p) = g_{a+1,b+1}(p)。 因此,

int_0^1 p(1-p)f(p) dp = 1/beta(a,b) int_0^1 g_{a+1,b+1}(p) dp 
 = beta(a+1,b+1) / beta(a,b)

因此你的积分结果是(beta(a+1,b+1)/beta(a,b))^5。这可以简化:beta(a+1,b+1)/beta(a,b) = (ab)/((a+b)*(a+b+1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 2019-02-08
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2018-05-06
    • 2019-06-08
    • 2021-10-13
    相关资源
    最近更新 更多