整合'的奇怪行为功能

时间:2016-02-02 04:53:27

标签: r integrate

下面的代码是用参数mu和sigma计算logit-normal分布随机变量的期望值(mu是mu,而lsig是sigma的对数)。

fun5 = function(y,mu=mu0,lsig=lsig0) {
  res = exp(y)/(1+exp(y)) * 1/sqrt(2*pi)/exp(lsig) * exp(-(y-mu)^2/2/exp(lsig)^2)
  return(res)
}
el = 17
integrate(fun5,-el,el,mu=0.3434108,lsig=-3.5)$value

我们应该将这个函数从负无穷大积分到正无穷大,但我不知道如何这样做,只知道有限区间积分。 因此,我尝试从足够广泛的整合中进行整合。间隔(从-el到+ el)。 当' el'它大于0.5,似乎合理地工作(这种积分的真值是0.585)。 但当el为14和15时,这很奇怪。有人知道为什么会这样吗?

> el = 10
> integrate(fun5,-el,el,mu=0.3434108,lsig=-3.5)$value
[1] 0.585
> el = 13
> integrate(fun5,-el,el,mu=0.3434108,lsig=-3.5)$value
[1] 0.585
> el = 14
> integrate(fun5,-el,el,mu=0.3434108,lsig=-3.5)$value
[1] 2.975338e-05
> el = 15
> integrate(fun5,-el,el,mu=0.3434108,lsig=-3.5)$value
[1] 1.134474e-05
> el = 16
> integrate(fun5,-el,el,mu=0.3434108,lsig=-3.5)$value
[1] 0.585

1 个答案:

答案 0 :(得分:1)

我想知道你是否理解R设计师允许-InfInf作为界限,并且事实上鼓励用户使用它们,特别是当这些边界中的一个或两个远离可能的边界时被称为“主要支持”:

> integrate(fun5,-Inf,Inf, mu=0.3434108, lsig=-3.5)$value
[1] 0.585