You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
aborts after second iteration of #'newton-raphson through an assertion in #'regularized-incomplete-beta (see trace below).
However, the same parameters tested on Python (SciPy), R and Wolfram|Alpha Open Code all agree the result should be ~ 1.856702e-34.
I've looked into the code of #'quantile, comaring it with SciPy (btdtri()) and R (qbeta()); it seems to me that the Python/R versions are implemented to handle some corner cases the Lisp code doesn't.
Related, (clml.statistics:quantile (clml.statistics:beta-distribution 0.1 0.9) 0.23) gyrates for a while, and eventually breaks on division by zero (Wolfram suggests the result should be 4.886*10^-7).
Trace:
CL-USER> (trace)
(CLML.STATISTICS.MATH:NEWTON-RAPHSON CLML.STATISTICS:CDF
CLML.STATISTICS:DENSITY
CLML.STATISTICS.MATH:REGULARIZED-INCOMPLETE-BETA)
CL-USER> (clml.statistics:quantile (clml.statistics:beta-distribution 0.01 0.01) 0.23)
0: (CLML.STATISTICS.MATH:NEWTON-RAPHSON
#<CLOSURE (LAMBDA (CLML.STATISTICS::X)
:IN
CLML.STATISTICS:QUANTILE) {1002C1D25B}>
#<CLOSURE (LAMBDA (CLML.STATISTICS::X)
:IN
CLML.STATISTICS:QUANTILE) {1002C1D27B}>
:INITIAL-GUESS 0.059905716600583525)
1: (CLML.STATISTICS:CDF
#<CLML.STATISTICS:BETA-DISTRIBUTION : SHAPE = (0.01, 0.01)>
0.059905716600583525)
2: (CLML.STATISTICS.MATH:REGULARIZED-INCOMPLETE-BETA 0.01 0.01
0.059905716600583525)
2: CLML.STATISTICS.MATH:REGULARIZED-INCOMPLETE-BETA returned
0.48649456283512205
1: CLML.STATISTICS:CDF returned 0.48649456283512205
1: (CLML.STATISTICS:DENSITY
#<CLML.STATISTICS:BETA-DISTRIBUTION : SHAPE = (0.01, 0.01)>
0.059905716600583525)
1: CLML.STATISTICS:DENSITY returned 0.08627940090408258
1: (CLML.STATISTICS:CDF
#<CLML.STATISTICS:BETA-DISTRIBUTION : SHAPE = (0.01, 0.01)>
-2.9129309065960576)
2: (CLML.STATISTICS.MATH:REGULARIZED-INCOMPLETE-BETA 0.01 0.01
-2.9129309065960576)
; Evaluation aborted on #<SIMPLE-ERROR "A and B should be nonnegative and X should be less than 1." {1002C39C63}>.
The text was updated successfully, but these errors were encountered:
That is not exactly surprising as I expect SciPy and R versions has had more eyes on it. That said there is no reason why we can fix things when we find things....
FWIW, I traced SciPy implementation of the beta-quantile function to the Cephes library. In particular, I managed to get the code from this fork working (and giving results in agreement with SciPy) in C and through CFFI, so that would be the implementation to compare to.
I've encountered the following issue:
aborts after second iteration of
#'newton-raphson
through an assertion in#'regularized-incomplete-beta
(see trace below).However, the same parameters tested on Python (SciPy), R and Wolfram|Alpha Open Code all agree the result should be ~ 1.856702e-34.
I've looked into the code of
#'quantile
, comaring it with SciPy (btdtri()
) and R (qbeta()
); it seems to me that the Python/R versions are implemented to handle some corner cases the Lisp code doesn't.Related,
(clml.statistics:quantile (clml.statistics:beta-distribution 0.1 0.9) 0.23)
gyrates for a while, and eventually breaks on division by zero (Wolfram suggests the result should be 4.886*10^-7).Trace:
The text was updated successfully, but these errors were encountered: