[ 
https://issues.apache.org/jira/browse/STATISTICS-37?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Herbert resolved STATISTICS-37.
------------------------------------
    Fix Version/s: 1.0
       Resolution: Implemented

> Better inverse Erfc function for the Normal distribution
> --------------------------------------------------------
>
>                 Key: STATISTICS-37
>                 URL: https://issues.apache.org/jira/browse/STATISTICS-37
>             Project: Apache Commons Statistics
>          Issue Type: Improvement
>          Components: distribution
>    Affects Versions: 1.0
>            Reporter: Alex Herbert
>            Priority: Major
>             Fix For: 1.0
>
>
> The Normal distribution uses InverseErfc for the inverse CDF. This is a 
> wrapper for InverseErf and as such it is limited in precision as p -> 0 since 
> the method computes using (2p - 1). When p is < 1e-16 then the inverse CDF 
> returns -infinity. The smallest z is around -8.2
> as computed by matlab:
> norminv(1e-16)
> -8.222082216130437
> scipy, R, matlab, octave, Mathematica all have methods to invert small p. 
> Here is output from matlab for norminv(5e-324): -38.472346342768788. It is 
> accurate down to the minimum value for a 64-bit float.
> There are two free libraries that seem to be used for this: Boost and Cephes 
> (function ntdri). The Boost licence is compatible with Apache and there are 
> some Boost derived works already in Commons Numbers. Incorporating the Boost 
> Erf functions into numbers would be useful.
> The inability to invert the Erfc for all p affects the Normal, Truncated 
> normal and Levy distributions.
> Boost error function inverses:
> [https://www.boost.org/doc/libs/1_77_0/libs/math/doc/html/math_toolkit/sf_erf/error_inv.html]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to