I ended up using a loggamma function to get more accurate values.

I borrowed code from here. http://pokerai.org/pj2/code/ProbMath.java. They
even have an N choose k method that you can probably use for your
hypergeometric calculation.




On 9/4/12 2:21 AM, "Thomas Neidhart" <[email protected]> wrote:

>On 09/04/2012 04:14 AM, Guha, Rajarshi (NIH/NCATS) [C] wrote:
>> Hi, I'm using  commons math 2.2 and the values from the hypergeometric
>>distribution do not seem to match an alternative implementation (from R
>>2.15.1). The code I'm using is
>> 
>>         HypergeometricDistributionImpl d =
>>              new HypergeometricDistributionImpl(2550, 61, 8);
>>         double logp = Math.log(1 - d.cumulativeProbability(7));
>> 
>> Using JDK 1.6.1, logp comes out to be -30.258290927468533
>> 
>> However, on R 2.15.1 when doing
>> 
>>      phyper(7, 61, 2489, 8, lower=F, log.p=T)
>> 
>> I get -30.33188
>> 
>> This seems to be a pretty big difference and in the project that I'm
>>using commons-math prevents me from porting some R code to Java.
>> 
>> Can anybody confirm these results? Is this a bug? Or am I invoking
>>something in the wrong way?
>
>Hi,
>
>there have been several improvements made to the Hypergeometric
>distribution in the latest trunk version of commons math (3.1, to be
>released soon).
>
>I tried your example and get the following result:
>
>logp = -30.333226371742285
>
>Best regards,
>
>Thomas
>
>---------------------------------------------------------------------
>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]

Reply via email to