2016-02-02 3 views
0

Следующий код предназначен для вычисления математического ожидания случайной величины логит-нормального распределения с параметрами 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 
+0

Вы можете просто использовать' интеграции (fun5, -Inf, Inf, мю = 0,3434108, LSIG = -3,5) ' – Dason

ответ

1

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

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

Я не знал, что Inf и -Inf разрешены. Это решает мою текущую проблему. Но я все еще удивляюсь, почему произошли такие странные результаты. – user67275

+1

(я думаю): если лимиты выбраны в диапазоне, где изменение значений минимально, это заставляет вычислять градиенты, которые необходимы для некоторых алгоритмов, которые выполняют адаптивные вычисления. Я рад услышать более обоснованные ответы, чем этот ответ «от руки». Но если бы этот ответ был полезен, вы должны, как минимум, его повышать. И, что еще более важно, вы должны пройти через вас другие вопросы, которые касались точечных ответов и выдвигать их. –

Смежные вопросы