[R] fisher.test gives p>1

Jacob Wegelin jacobwegelin at fastmail.fm
Thu Mar 4 17:15:51 CET 2010


The purpose of this email is to

(1) report an example where fisher.test returns p > 1

(2) ask if there is a reliable way to avoid p>1 with fisher.test.

If one has designed one's code to return an error when it finds a "nonsensical" probability, of course a value of p>1 can cause havoc.

Example:

> junk<-data.frame(score=c(rep(0,14), rep(1,29), rep(2, 16)))
> junk<-rbind(junk, junk)
> junk$group<-c(rep("DOG", nrow(junk)/2), rep("kitty", nrow(junk)/2))
> table(junk$score, junk$group)

     DOG kitty
   0  14    14
   1  29    29
   2  16    16
> dput(fisher.test(junk$score, junk$group)$p.value)
1.00000000000012
> 
> dput(fisher.test(junk$score, junk$group, simulate.p.value=TRUE)$p.value)
1

In this particular case, specifying a simulated p value solved the problem. But is there a reliable way to avoid p>1 in general?

> sessionInfo()
R version 2.10.1 (2009-12-14) 
x86_64-apple-darwin9.8.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] tools_2.10.1
>

Thanks for any insight

Jacob A. Wegelin
Assistant Professor
Department of Biostatistics
Virginia Commonwealth University
730 East Broad Street Room 3006
P. O. Box 980032
Richmond VA 23298-0032
U.S.A.



More information about the R-help mailing list