--- Phil Steitz <[EMAIL PROTECTED]> wrote: > 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.
+1 to the values in the table above. As a user I would prefer to be returned an infinity rather than MAX_VALUE where possible (it's too bad the integer types don't provide infinity values), because even though I would often recognize 1e+308 or thereabouts as Double.POSITIVE_INFINITY, I would still have to do that conversion mentally, and I would always wonder whether the returned value was actually MAX_VALUE or just the implementation-dependent representation of POSITIVE_INFINITY. Also consider what would happen if the data type were changed to float. Then if MAX_VALUE were used, the numeric value returned for p = 1 would differ depending on the data type. With the infinity values, although there's a class difference between Double.POSITIVE_INFINITY and Float.POSITIVE_INFINITY, the concept is clearly identical. It's strange that BigDecimal doesn't provide infinity values, though. Maybe that's something Commons should address at some point. Al __________________________________ Do you Yahoo!? Friends. Fun. Try the all-new Yahoo! Messenger. http://messenger.yahoo.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]