[Rd] fisher.test() in ctest or perhaps uniroot() (PR#455)
Peter Dalgaard BSA
p.dalgaard@biostat.ku.dk
24 Feb 2000 17:58:49 +0100
thomas@biostat.washington.edu writes:
> fisher.test(matrix(c(1,20,246,6873),2),hybrid=F)
> Error in if (f(lower, ...) * f(upper, ...) >= 0) stop("f() values at end
> points not of opposite sign") :
> missing value where logical needed
Problem seems to be that mnhyper as defined doesn't like extreme
arguments, and is being called with
1/.Machine$double.eps
e.g.
> get("mnhyper",envir=DUMP$sys.frames[[2]])(1000000000000000)
[1] NaN
> get("mnhyper",envir=DUMP$sys.frames[[2]])(100000000000000)
[1] 21
The code looks like this:
if (ncp == 0)
return(lo)
if (ncp == Inf)
return(hi)
q <- lo:hi
d <- dhyper(q, m, n, k) * ncp^(0:(hi - lo))
And I suspect that the test should be ncp^(hi-lo)==Inf.
Seems to work:
> fisher.test(matrix(c(1,20,246,6873),2),hybrid=F)
Fisher's Exact Test for Count Data
data: matrix(c(1, 20, 246, 6873), 2)
p-value = 0.5231
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.0335691 8.8064130
sample estimates:
odds ratio
1.396855
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._