nothnagel at medinfo.uni-kiel.de
2007-Jan-31  14:16 UTC
[Rd] Bug in 'pchisq' for x=0.0 (PR#9485)
The function 'pchisq' from the 'stats' library gives a wrong result if the argument equals exactly zero: # Upper tail of central 1-df chi^2 distribution> pchisq(1 , 1, ncp=0, lower.tail = F, log.p = FALSE)[1] 0.3173105> pchisq(0.5 , 1, ncp=0, lower.tail = F, log.p = FALSE)[1] 0.4795001> pchisq(0.01 , 1, ncp=0, lower.tail = F, log.p = FALSE)[1] 0.9203443> pchisq(0.0001 , 1, ncp=0, lower.tail = F, log.p = FALSE)[1] 0.9920213> pchisq(0.00000001, 1, ncp=0, lower.tail = F, log.p = FALSE)[1] 0.9999202> pchisq(0.00 , 1, ncp=0, lower.tail = F, log.p = FALSE)[1] 0 ## Should be 1.0 The error occurred with R version 2.4.0 (windows) and version 2.3.1 (linux). Best regards, Michael Nothnagel --- Dr. Michael Nothnagel Institute of Medical Informatics and Statistics, University of Kiel http://capella.uni-kiel.de/ ---
maechler at stat.math.ethz.ch
2007-Jan-31  16:38 UTC
[Rd] Bug in 'pchisq' for x=0.0 (PR#9485)
>>>>> "MN" == Michael Nothnagel <nothnagel at medinfo.uni-kiel.de> >>>>> on Wed, 31 Jan 2007 15:16:02 +0100 (CET) writes:MN> The function 'pchisq' from the 'stats' library gives a wrong result if the MN> argument equals exactly zero: MN> # Upper tail of central 1-df chi^2 distribution >> pchisq(1 , 1, ncp=0, lower.tail = F, log.p = FALSE) MN> [1] 0.3173105 >> pchisq(0.5 , 1, ncp=0, lower.tail = F, log.p = FALSE) MN> [1] 0.4795001 >> pchisq(0.01 , 1, ncp=0, lower.tail = F, log.p = FALSE) MN> [1] 0.9203443 >> pchisq(0.0001 , 1, ncp=0, lower.tail = F, log.p = FALSE) MN> [1] 0.9920213 >> pchisq(0.00000001, 1, ncp=0, lower.tail = F, log.p = FALSE) MN> [1] 0.9999202 >> pchisq(0.00 , 1, ncp=0, lower.tail = F, log.p = FALSE) MN> [1] 0 ## Should be 1.0 MN> The error occurred with R version 2.4.0 (windows) and version 2.3.1 (linux). Yes, but both of these R versions are outdated. The current version is 2.4.1 and there, the result *is* 1. Regards, Martin Maechler, ETH Zurich
Please do not report on obsolete versions of R!  From the changes from 
2.4.1:
     o	pchisq() would sometimes use the wrong tail when calculating
 	non-central probabilities with lower.tail = FALSE. (PR#9406)
You are quite explicitly asked not to waste the R project's resources in 
this way.  Please do re-read the FAQ.
On Wed, 31 Jan 2007, nothnagel at medinfo.uni-kiel.de wrote:
> The function 'pchisq' from the 'stats' library gives a
wrong result if the
> argument equals exactly zero:
>
> # Upper tail of central 1-df chi^2 distribution
>> pchisq(1         , 1, ncp=0, lower.tail = F, log.p = FALSE)
> [1] 0.3173105
>> pchisq(0.5       , 1, ncp=0, lower.tail = F, log.p = FALSE)
> [1] 0.4795001
>> pchisq(0.01      , 1, ncp=0, lower.tail = F, log.p = FALSE)
> [1] 0.9203443
>> pchisq(0.0001    , 1, ncp=0, lower.tail = F, log.p = FALSE)
> [1] 0.9920213
>> pchisq(0.00000001, 1, ncp=0, lower.tail = F, log.p = FALSE)
> [1] 0.9999202
>> pchisq(0.00      , 1, ncp=0, lower.tail = F, log.p = FALSE)
> [1] 0   ## Should be 1.0
>
> The error occurred with R version 2.4.0 (windows) and version 2.3.1
(linux).
>
>
> Best regards,
>
> Michael Nothnagel
>
> ---
> Dr. Michael Nothnagel
> Institute of Medical Informatics and Statistics,
> University of Kiel
> http://capella.uni-kiel.de/
> ---
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595