Apache Commons Math Нормальная кумулятивная вероятность

В Википедии перечислены различные численные методы вычисления кумулятивной вероятности нормального распределения. Однако с Apache Commons Math вам не нужно знать ни об одном из них, поскольку библиотека просто делает всю работу за вас:

NormalDistribution normal = new NormalDistribution(mu, sigma);
normal.cumulativeProbability(x);

Для некоторого исследовательского проекта мне интересно знать, какой метод они используют. Кто-нибудь знает, какой метод Apache Commons Math использует для аппроксимации нормального совокупного значения? Это из методов, перечисленных в википедии, или они реализовали что-то другое?


person Pro.Hessam    schedule 21.04.2015    source источник


Ответы (2)


Прелесть программного обеспечения с открытым исходным кодом в том, что вы всегда можете проверьте исходный код. Реализация cumulativeProbability довольно проста, она просто возвращает

0.5 * (1 + Erf.erf(dev / (standardDeviation * SQRT2)));

где Erf.erf вычисляет функцию ошибки. Он определен здесь.

И нет, он не использует какие-либо специальные методы из упомянутой статьи в Википедии. Это просто прямая реализация формулы

введите здесь описание изображения

person Carsten    schedule 21.04.2015
comment
Спасибо. Для полноты картины отмечу, что функция ошибок не имеет замкнутой формулы и аппроксимируется каким-либо численным методом. - person Pro.Hessam; 21.04.2015
comment
Правильно, вы можете точно увидеть, что делает Commons Math, взглянув на реализацию Erf в пакете special. Он использует методы, упомянутые в статье Wikipedia Erf[1]. [1]:en.wikipedia.org/wiki/ - person Phil Steitz; 22.04.2015

Вероятно, вы можете увидеть исходный код или javadoc. См. там http://commons.apache.org/proper/commons-math/source-repository.html

а также

http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/NormalDistribution.html

Кроме того, в руководстве пользователя есть много информации. Раздел о распространении кажется интересным: http://commons.apache.org/proper/commons-math/userguide/distribution.html

person JFPicard    schedule 21.04.2015
comment
Спасибо, но на мой вопрос нет ответа в javadoc. И я склонен спрашивать своих коллег, прежде чем исследовать исходный код. - person Pro.Hessam; 21.04.2015
comment
@Pro.Hessam Это грубо. Вы можете просто просмотреть исходный код за считанные секунды, в то время как вы предпочитаете не делать этого, а полагаться на время и терпение других, которые сделают вашу работу. - person Carsten; 21.04.2015
comment
@Carsten Я надеялся найти кого-то знакомого с библиотекой в ​​сообществе, чтобы ответить на мой вопрос. Чтобы не тратить ничье время. - person Pro.Hessam; 21.04.2015