J.Pietschmann wrote:
Phil Steitz wrote:
1) Decide what to do about inverse cumulative probabilities where p = 1 (easy solution is to document and throw)
Nearly +1
My own "nearly +1" on this just turned to -1. After looking some more at the code and thinking some more, I think that both p=1 and p=0 should be handled correctly in all cases. The difficult cases are when the probability density function has unbounded support. Here is what I propose for the values of inverseCumulativeProbability() at p=0 and p=1 for current distributions. Unless otherwise noted, these values are intented to be independent of distribution parameters.
Distribution p=0 p=1 ------------------------------------------------------------------ Binomial 0 Integer.MAX_VALUE Chisquare 0 Double.POSITIVE_INFINITY Exponential 0 Double.POSITIVE_INFINITY F 0 Double.POSITIVE_INFINITY Gamma 0 Double.POSITIVE_INFINITY HyperGeometric 0 finite, parameter-dependent Normal Double.NEGATIVE_INFINITY Double.POSITIVE_INFINITY T Double.NEGATIVE_INFINITY Double.POSITIVE_INFINITY
Other than the value for Chisquare with p=1 (which causes R to hang), these values are consistent with what R returns using the q* functions. It might be more convenient to return Double.MAX_VALUE, -Double.MAX_VALUE in place of the INFINITY's (since then we could just use getDomainLowerBound at 0 and 1) but this would not be correct mathematically. If there are no objections, I will find a way to get the values above returned.
I have committed changes and tests to ensure that the values in the table above are returned, modulo correcting the following mistakes:
Both of the discrete distributions (Binomial and Hypergeometric) should return -1 for the inverseCumulativeProbability(0). The definition that we are using is that inverseCumulativeProbability(p) = the largest x such that
P(X <= x) <= p.
Since 0 has positive probability for both the Binomial and Hypergeometric distributions, and the function is integer-valued, the correct value to return in these cases is actually -1, not 0.
Phil
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
