Skip to content

An extreme quantile of the geometric distribution

4 messages · michael.baudin at contrib.scilab.org, Peter Dalgaard

#
Hi,

 With R version 2.10.0 (2009-10-26) on Windows, I computed the p=1.e-20 
 quantile of the geometric distribution with parameter prob=0.1.
[1] -1

 But this is not possible, since X=0,1,2,...

 I guess that this might be a bug in the quantile function, which should 
 use the log1p function, instead of the naive formula.

 Am I correct ?

 Best regards,

 Micha?l
#
On Jun 28, 2012, at 22:49 , <michael.baudin at contrib.scilab.org> <michael.baudin at contrib.scilab.org> wrote:

            
Nope. (The source is availably, you know....).

The problem is that a slight fuzz is subtracted inside ceil(....), but there's no check that the result is positive.

qnbinom(...., size=1) is equivalent and does get right, by the way.  

-pd

  
    
#
Hi,

 I'm sorry, I do not clearly understand.

 I'm aware that the source is available at :

 http://svn.r-project.org/R/trunk/src/nmath/qgeom.c

 But a good source does not mean a correct result, because of 
 compilation issues. Moreover, I do not fully understand why the 1e-7 
 coefficient in the formula was put there. The comment "add a fuzz to 
 ensure left continuity" is not obvious to me.

 Best regards,

 Micha?l

 On Fri, 29 Jun 2012 14:21:50 +0200, peter dalgaard <pdalgd at gmail.com> 
 wrote:
#
On Jun 30, 2012, at 12:13 , <michael.baudin at contrib.scilab.org> <michael.baudin at contrib.scilab.org> wrote:

            
Yes, but you were suggesting that non-use of log1p caused the problem, and the source clearly uses it, so I assumed that you didn't check.
I never implied that there wasn't a problem.

The gist of the comment it is that we want to ensure that (for moderate i at least)

qgeom(pgeom(i,.1),.1)==i

and that slightly lower values should also give i, whereas higher values give i+1:
[1] 1
[1] 1
[1] 2

However, floating point calculations being what they are, we don't trust equality, so we move the cutpoint a little -- apparently a little too much.