[ 
https://issues.apache.org/jira/browse/MATH-692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13139105#comment-13139105
 ] 

Sébastien Brisard commented on MATH-692:
----------------------------------------

Hi Christian,

{quote}
Hi Sébastien,

the problem with the plateau is indeed one issue which needs to be solved.
{quote}
I'm working on it...

{quote}
Additionally, AbstractDistribution will need an implementation of 
inverseCumulativeProbability. In fact both implementations should be the same 
except for the solver to be used. Thus inverseCumulativeProbability should be 
implemented just once in AbstractDistribution, and invoking the solver should 
be put to a separate procedure so that it can be overridden in 
AbstractContinuousDistribution.
{quote}
OK, for now, I'm concentrating on making the current impl in 
{{AbstractContinuousDistribution}} more robust. The other impl should be easier.

{quote}
A third point is the choice of the solvers. For AbstractDistribution we need a 
solver which works even for discontinuous cdfs (BisectionSolver can do the job, 
but maybe the implementations of the faster IllinoisSolver, PegasusSolver, 
BrentSolver, or another solver can cope with discontinuities, too). For 
AbstractContinuousDistribution it would be beneficial to use a 
DifferentiableUnivariateRealSolver. However, the NewtonSolver cannot be used 
due to uncertainty of convergence and an alternative doesn't seem to exist by 
now. So we have to choose one of the other solvers for now.
{quote}
The current implementation uses a Brent solver. I think the solver itself is 
only one side of the issue. The other point is the algorithm used to bracket 
the solution, in order to ensure that the result is consistent with the 
definition of the cumprob. As for the {{DifferentiableUnivariateRealSolver}}, 
I'm not too sure. I guess it depends on what is meant by "continuous 
distribution". For me, it means that the random variable takes values in a 
continuous set, and possibly its distribution is defined by a density. However, 
in my view, nothing prevents occurences of Dirac functions, in which case the 
cum sum is only piecewise C1. It's all a matter of definition, of course, and 
I'll ask the question on the forum to check whether or not people want to allow 
for such a situation.

{quote}
As all these points are interdependent, I guess it's best to solve them as a 
whole. If you like, you can do this.

Best Regards,
Christian
{quote}
Yes, I'm very interested.

Best regards,
Sébastien
                
> Cumulative probability and inverse cumulative probability inconsistencies
> -------------------------------------------------------------------------
>
>                 Key: MATH-692
>                 URL: https://issues.apache.org/jira/browse/MATH-692
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 1.0, 1.1, 1.2, 1.3, 2.0, 2.1, 2.2, 2.2.1, 3.0
>            Reporter: Christian Winter
>            Priority: Minor
>             Fix For: 3.0
>
>
> There are some inconsistencies in the documentation and implementation of 
> functions regarding cumulative probabilities and inverse cumulative 
> probabilities. More precisely, '<' and '<=' are not used in a consistent way.
> Besides I would move the function inverseCumulativeProbability(double) to the 
> interface Distribution. A true inverse of the distribution function does 
> neither exist for Distribution nor for ContinuosDistribution. Thus we need to 
> define the inverse in terms of quantiles anyway, and this can already be done 
> for Distribution.
> On the whole I would declare the (inverse) cumulative probability functions 
> in the basic distribution interfaces as follows:
> Distribution:
> - cumulativeProbability(double x): returns P(X <= x)
> - cumulativeProbability(double x0, double x1): returns P(x0 < X <= x1) [see 
> also 1)]
> - inverseCumulativeProbability(double p):
>   returns the quantile function inf{x in R | P(X<=x) >= p} [see also 2), 3), 
> and 4)]
> 1) An aternative definition could be P(x0 <= X <= x1). But this requires to 
> put the function probability(double x) or another cumulative probability 
> function into the interface Distribution in order be able to calculate P(x0 
> <= X <= x1) in AbstractDistribution.
> 2) This definition is stricter than the definition in ContinuousDistribution, 
> because the definition there does not specify what to do if there are 
> multiple x satisfying P(X<=x) = p.
> 3) A modification could be defined for p=0: Returning sup{x in R | P(X<=x) = 
> 0} would yield the infimum of the distribution's support instead of a 
> mandatory -infinity.
> 4) This affects issue MATH-540. I'd prefere the definition from above for the 
> following reasons:
> - This definition simplifies inverse transform sampling (as mentioned in the 
> other issue).
> - It is the standard textbook definition for the quantile function.
> - For integer distributions it has the advantage that the result doesn't 
> change when switching to "x in Z", i.e. the result is independent of 
> considering the intergers as sole set or as part of the reals.
> ContinuousDistribution:
> nothing to be added regarding (inverse) cumulative probability functions
> IntegerDistribution:
> - cumulativeProbability(int x): returns P(X <= x)
> - cumulativeProbability(int x0, int x1): returns P(x0 < X <= x1) [see also 1) 
> above]

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to