Странное поведение функции «интегрировать»

Следующий код предназначен для вычисления математического ожидания случайной величины логит-нормального распределения с параметрами mu и sigma (mu — это 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). Но когда 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

person user67275    schedule 02.02.2016    source источник
comment
Вы можете просто использовать integrate(fun5, -Inf, Inf, mu = 0.3434108, lsig = -3.5)   -  person Dason    schedule 02.02.2016


Ответы (1)


Мне интересно, понимаете ли вы, что дизайнеры R допускают -Inf и Inf в качестве границ и фактически поощряют пользователя использовать их, особенно когда одна или обе эти границы далеки от того, что можно было бы назвать «преобладающей поддержкой»:

> integrate(fun5,-Inf,Inf, mu=0.3434108, lsig=-3.5)$value
[1] 0.585
person IRTFM    schedule 02.02.2016
comment
Я не знал, что Inf и -Inf разрешены. Это решает мою текущую проблему. Но мне все еще интересно, почему произошли такие странные результаты. - person user67275; 02.02.2016
comment
(Я думаю): если пределы выбраны в диапазоне, где вариация значений минимальна, это испортит расчет градиентов, которые необходимы для некоторых алгоритмов, выполняющих адаптивные вычисления. Я рад услышать более информированные ответы, чем этот ответ маханием руками. Но если этот ответ был полезен, вы должны как минимум проголосовать за него. И, что еще более важно, вы должны просмотреть другие вопросы, на которые были точные ответы, и также проголосовать за них. - person IRTFM; 02.02.2016