[Rd] Re: [R] p-value > 1 in fisher.test()

(Ted Harding) Ted.Harding at nessie.mcc.ac.uk
Sun Jun 5 12:40:34 CEST 2005


On 04-Jun-05 Martin Maechler wrote:
>>>>>> "UweL" == Uwe Ligges <ligges at statistik.uni-dortmund.de>
>>>>>>     on Sat, 04 Jun 2005 11:43:34 +0200 writes:
> 
>     UweL> (Ted Harding) wrote:
>     >> On 03-Jun-05 Ted Harding wrote:
>     >> [...]
>     >> I have a suggestion (maybe it should also go to R-devel).
>     >> 
>     >> There are many functions in R whose designated purpose is
>     >> to return the value of a probability (or a probability
>     >> density). This designated purpose is in the mind of the
>     >> person who has coded the function, and is implicit in its
>     >> usage.
>     >> 
>     >> Therefore I suggest that every such function should have
>     >> a built-in internal check that no probability should be
>     >> less than 0 (and if the primary computation yields such
>     >> a value then the function should set it exactly to zero),
>     >> and should not exceed 1 (in which case the function should
>     >> set it exactly to 1). [And, in view of recent echanges,
>     >> I would suggest exactly +0, not -0!]
>     >> 
>     >> Similar for any attempts to return a negative probability
>     >> density; while of course a positive value can be allowed
>     >> to be anything.
>     >> 
>     >> All probabilities would then be guaranteed to be "clean"
>     >> and issues like the Fisher exact test above would no longer
>     >> be even a tiny problem.
>     >> 
>     >> Implementing this in the possibly many cases where it is
>     >> not already present is no doubt a long-term (and tedious)
>     >> project.
>     >> 
>     >> Meanwhile, people who encounter problems due to its absence
>     >> can carry out their own checks and adjustments!
> 
>     UweL> [moved to R-devel]
> 
>     UweL> Ted, my (naive?) objection:
>     UweL> Many errors in the underlying code have been detected by a
> function 
>     UweL> returning a nonsensical value, but if the probability is
> silently set to 
>     UweL> 0 or 1 .......
>     UweL> Hence I would agree to do so in special cases where it makes
> sense 
>     UweL> because of numerical issues, but please not globally.
> 
> I agree very much with Uwe's point.
> 
> Further to fisher.test(): This whole thread is
> re-hashing a pretty recent  bug report on fisher.test() 
> { "negative p-values from fisher's test (PR#7801)", April '05}
> I think that only *because* of the obviously wrong P-values have
> we found and confirmed that the refereed and published code
> underlying fisher.test() is bogous.   Such knowledge would have
> been harder to gain if the P-values would have been cut into [0,1].
> 
> Martin Maechler

Uwe, Martin: Those are very pertinent comments, and they lead me
to agree with you!

I really had in mind the case where the code for a function was
not in question, but the usual "rounding errors" could generate
an "impossible" result.

So I think that perhaps the best solution is the one I proposed
as "interim", namely that people carry out their own checks and
adjustments.

Best wishes,
Ted.


--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 05-Jun-05                                       Time: 11:40:21
------------------------------ XFMail ------------------------------



More information about the R-devel mailing list