[ https://issues.apache.org/jira/browse/MATH-692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13133665#comment-13133665 ]
Phil Steitz edited comment on MATH-692 at 10/23/11 3:23 PM: ------------------------------------------------------------ Have a look at the default implementation of cum(x0,x1) now in AbstractDistribution. I think the incorrectness in the documentation there may have been what triggered Christian to raise this issue. The equation cum(a,b) = F(b) - F(a) where F is the distribution function is natural and what the impl there is trying to do. In the discrete case, this equation fails, however, unless you define the cum to exclude the *lower* endpoint. That's why P(x0 < X <= x1) is a better definition. was (Author: psteitz): Have a look at the default implementation of cum(-,-) now in AbstractDistribution. I think the incorrectness in the documentation there may have been what triggered Christian to raise this issue. The equation cum(a,b) = F(b) - F(a) where F is the distribution function is natural and what the impl there is trying to do. In the discrete case, this equation fails, however, unless you define the cum to exclude the *lower* endpoint. That's why P(x0 < X <= x1) is a better definition. > 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