[Rd] quantiles of the hypergeometric distribution (PR#502)

thomas@biostat.washington.edu thomas@biostat.washington.edu
Fri, 24 Mar 2000 17:10:35 +0100 (MET)


On 24 Mar 2000, Peter Dalgaard BSA wrote:

> Torsten Hothorn <hothorn@ci.tuwien.ac.at> writes:
> 
> >  term = exp(lfastchoose(NR, xr) + lfastchoose(NB, xb) - lfastchoose(N, n));
> > 
> > The expression inside the exp() function gives -1415.411856 and exp()
> > returns 0. So term and sum in 
> > 
> >  while(sum < p && xr < xend) {
> >         xr++;
> >         NB++;
> >         term *= (NR / xr) * (xb / NB);
> >         sum += term;
> >         xb--;
> >         NR--;
> >     }
> > 
> > are 0 all the time and xend = 600 is returned. 
> > 
> > R-Core: How to fix this?
> 
> Ick! That is of course only to be expected with recurrence relations
> like this applied to large numbers. Since the term formula (as far as
> I remember!) applies to all the point probabilities, I suppose that
> one could start the recurrence from a "known positive" value and work
> both forwards and backwards from there. Since you still want to do the
> sums from the low end (although that is perhaps not all that
> important?) you might need an intermediate array to hold the values.
> One idea could be to start from the normal approximation of the
> desired quantile. Probably a bit more than an afternoons work, but
> hardly several weeks...

As phyper seems to work we could just start at the Normal approximation to
qhyper and search for x such  that phyper(x)=p. Since it's a discrete
distribution this shouldn't take that long.

	-thomas






-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._