условное ожидание Matlab, похоже, не работает для логнормального

Я уже пробовал аналогичный код для других дистрибутивов (экспоненциальный, нормальный и т. д.), и в этих случаях код работает. Однако для случая логнормального распределения, по-видимому, возникает проблема в том, как Matlab вычисляет числовой интеграл.

Код:

function y=condint(sigma,mi,phihat)
y=quad(@phipr,phihat,110,0.000000000000001)

    function y=phipr(x)
      y=1./(1-logncdf(phihat)).*1/(2*pi*sigma^2).^(1/2).*exp(-((log(x)-mi).^2)./(2*sigma^2));
    end
end

он не обладает очевидным свойством, заключающимся в том, что условное математическое ожидание для более высоких отсечек (phihat) должно быть выше. Является ли это общей проблемой численных процедур для распределения, которое очень быстро затухает? Это известная проблема? Спасибо за помощь

P.S. В приведенном выше примере я использовал в качестве верхней границы 110, потому что при использовании параметров mi=0 и sigma=0,25 использование более высоких значений дало бы странные результаты даже для cdf. Опять же, связано ли это с проблемами в приближении интеграла трапеций?


person MAec    schedule 24.10.2012    source источник
comment
Проблема усугубляется (более очевидна) при низких значениях сигмы.   -  person MAec    schedule 31.10.2012


Ответы (1)


Ошибка в коде: logncdf(phihat) должен быть logncdf(phihat,mi,sigma).

Это решает.

person MAec    schedule 31.10.2012