Странное поведение функции "интегрировать"
Следующий код предназначен для вычисления ожидаемой случайной величины логит-нормального распределения с параметрами mu и sigma (mu is mu, а lsig - логарифм сигма).
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). Но когда эль 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 ответ
Мне интересно, если вы понимаете, что дизайнеры R позволяют -Inf
а также Inf
как границы и фактически поощряет пользователя использовать их, особенно когда одна или обе из этих границ далеки от того, что можно назвать "преобладающей поддержкой":
> integrate(fun5,-Inf,Inf, mu=0.3434108, lsig=-3.5)$value
[1] 0.585