This is from 2.2.1: > Phyper <- phyper(7, m = 40, n = 30, k = 20) > print(Phyper, digits=16) [1] 0.01796062766370490
This is from 2.3.0: > Phyper <- phyper(7, m = 40, n = 30, k = 20) > print(Phyper, digits=16) [1] 0.01796062766370491 > qhyper(Phyper, m = 40, n = 30, k = 20) [1] 8 Then if I save Phyper from 2.2.1, and load it in 2.3.0, > qhyper(Phyper, m = 40, n = 30, k = 20) [1] 7 so it appears that the difference between 0.01796062766370490 and 0.01796062766370491 is important here. (2.3.0) > qhyper(0.01796062766370490, m = 40, n = 30, k = 20) [1] 7 > qhyper(0.01796062766370491, m = 40, n = 30, k = 20) [1] 8 Comparing the full sample: This is from 2.2.1: > Rhyper <- scan() 1: 16 11 11 15 11 13 13 12 13 10 10 7 11 14 13 9 14 13 13 11 21: Read 20 items > Phyper <- phyper (Rhyper, m = 40, n = 30, k = 20) > print(Phyper, digits=16) [1] 0.99744478362220412 0.51295659016196715 0.51295659016196715 [4] 0.98680472393309626 0.51295659016196715 0.86627412777488222 [7] 0.86627412777488222 0.71494883441868140 0.86627412777488222 [10] 0.30864259597126753 0.30864259597126753 0.01796062766370490 [13] 0.51295659016196715 0.95139460528774533 0.86627412777488222 [16] 0.15132082044442866 0.95139460528774533 0.86627412777488222 [19] 0.86627412777488222 0.51295659016196715 This is from 2.3.0: > print(Phyper, digits=16) [1] 0.99744478362220401 0.51295659016196726 0.51295659016196726 [4] 0.98680472393309615 0.51295659016196726 0.86627412777488211 [7] 0.86627412777488211 0.71494883441868129 0.86627412777488211 [10] 0.30864259597126747 0.30864259597126747 0.01796062766370491 [13] 0.51295659016196726 0.95139460528774533 0.86627412777488211 [16] 0.15132082044442868 0.95139460528774533 0.86627412777488211 [19] 0.86627412777488211 0.51295659016196726 The 14's (elements 14 and 17) are identical, everything else is slightly different. I also got this interesting result from 2.2.1: > Rhyper <- 1:20 > Phyper <- phyper (Rhyper, m = 40, n = 30, k = 20) > qhyper(Phyper, m = 40, n = 30, k = 20) [1] 1 2 3 4 6 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Repeating the operation for 2.3.0: > Rhyper <- 1:20 > Phyper <- phyper (Rhyper, m = 40, n = 30, k = 20) > qhyper(Phyper, m = 40, n = 30, k = 20) [1] 1 2 3 4 6 6 8 8 9 10 11 12 13 14 15 16 17 18 19 20 (I also tried on WinXP R 2.2.1, and got the expected 1:20 back.) On Tue, Mar 28, 2006 at 12:02:11PM +0100, Prof Brian Ripley wrote: > Then we need you to dig in to find out why. I'd start by seeing if Phyper > had changed (either by printing it to 16dp or by saving it from 2.2.1 and > reloading into 2.3.0). > > On Tue, 28 Mar 2006, Andrew Robinson wrote: > > >I get: > > > >>Rhyper <- scan() > >1: 16 11 11 15 11 13 13 12 13 10 10 7 11 14 13 9 14 13 13 11 > >21: > >Read 20 items > >>Phyper <- phyper (Rhyper, m = 40, n = 30, k = 20) > >>qhyper(Phyper, m = 40, n = 30, k = 20) > >[1] 16 11 11 15 11 13 13 12 13 10 10 8 11 14 13 9 14 13 13 11 > > > > > >The 12th element (8) differs from the input (7). > > > > > >>Phyper <- phyper (7, m = 40, n = 30, k = 20) > >>qhyper(Phyper, m = 40, n = 30, k = 20) > >[1] 8 > > > > > >If I do this using 2.2.1 then the input and the output are identical. > > > > > > > > > >On Tue, Mar 28, 2006 at 10:27:08AM +0100, Prof Brian Ripley wrote: > >>On Tue, 28 Mar 2006, Andrew Robinson wrote: > >> > >>>You're welcome. You are correct. d-p-q-r-tests.Rout.fail > >>>shows: > >>> > >>>>All.eq(Rhyper, qhyper (Phyper, m = 40, n = 30, k = 20)) > >>>[1] "Mean scaled difference: 0.08333333" > >> > >>Yes, please run the lines below, e.g. > >> > >>Rhyper <- scan() > >>16 11 11 15 11 13 13 12 13 10 10 7 11 14 13 9 14 13 13 11 > >> > >>Phyper <- phyper (Rhyper, m = 40, n = 30, k = 20) > >>qhyper(Phyper, m = 40, n = 30, k = 20) > >> > >>and tell us what answer you get. > >> > >> > >>> > >>> > >>> > >>>Let me know if/how I can further assist. > >>> > >>>Andrew > >>> > >>> > >>> > >>>On Tue, Mar 28, 2006 at 09:03:48AM +0100, Prof Brian Ripley wrote: > >>>>Thanks for checking. > >>>> > >>>>Please look in d-p-q-r-tests.Rout.fail and see what immediately preceeds > >>>>the line > >>>> > >>>>[1] "Mean scaled difference: 0.08333333" > >>>> > >>>>Some experimentation suggests it is > >>>> > >>>>>All.eq(Rhyper, qhyper (Phyper, m = 40, n = 30, k = 20)) > >>>> > >>>>If so, we have > >>>> > >>>>Rhyper <- scan() > >>>>16 11 11 15 11 13 13 12 13 10 10 7 11 14 13 9 14 13 13 11 > >>>> > >>>>Phyper <- phyper (Rhyper, m = 40, n = 30, k = 20) > >>>> > >>>>and those have been checked. So the error would appear to be in > >>>> > >>>>qhyper(Phyper, m = 40, n = 30, k = 20) > >>>> > >>>>and indeed a mean scaled difference of 1/12 is plausible, since the mean > >>>>of Rhyper is 12. So I deduce that your platform has a problem in qhyper, > >>>>but please cross-check. > >>>> > >>>>If so, this is strange as the only recent change to qhyper.c (or things > >>>>I > >>>>can see it uses such as lfastchoose) is cosmetic. > >>>> > >>>>Can you confirm the diagnosis is correct so far? > >>>> > >>>> > >>>>On Tue, 28 Mar 2006, Andrew Robinson wrote: > >>>> > >>>>>Hi Developers, > >>>>> > >>>>>The alpha, compiles successfully, but it is failing make check-all (on > >>>>>two seperate machines, both FreeBSD 6.1). > >>>>> > >>>>>Here is the version string: > >>>>> > >>>>>platform i386-unknown-freebsd6.1 > >>>>>arch i386 > >>>>>os freebsd6.1 > >>>>>system i386, freebsd6.1 > >>>>>status alpha > >>>>>major 2 > >>>>>minor 3.0 > >>>>>year 2006 > >>>>>month 03 > >>>>>day 27 > >>>>>svn rev 37584 > >>>>>language R > >>>>>version.string Version 2.3.0 alpha (2006-03-27 r37584) > >>>>> > >>>>> > >>>>> > >>>>>Here is the error message from make check-all > >>>>> > >>>>>comparing 'd-p-q-r-tests.Rout' to './d-p-q-r-tests.Rout.save' > >>>>>...706c706 > >>>>>< [1] "Mean scaled difference: 0.08333333" > >>>>>--- > >>>>>>[1] TRUE > >>>>>gmake[3]: *** [d-p-q-r-tests.Rout] Error 1 > >>>>>gmake[3]: Leaving directory `/usr/local/beta/R-alpha/tests' > >>>>>gmake[2]: *** [test-Specific] Error 2 > >>>>>gmake[2]: Leaving directory `/usr/local/beta/R-alpha/tests' > >>>>>gmake[1]: *** [test-all-basics] Error 1 > >>>>>gmake[1]: Leaving directory `/usr/local/beta/R-alpha/tests' > >>>>>gmake: *** [check-all] Error 2 > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>I have checked d-p-q-r-tests.Rout.fail for any obvious problems - I > >>>>>found some warnings, viz. > >>>>> > >>>>> > >>>>> > >>>>>>pgamma(1,Inf,scale=Inf) == 0 > >>>>>[1] TRUE > >>>>>>## Also pgamma(Inf,Inf) == 1 for which NaN was slightly more > >>>>>appropriate > >>>>>>all(is.nan(c(pgamma(Inf, 1,scale=Inf), > >>>>>+ pgamma(Inf,Inf,scale=Inf)))) > >>>>>[1] TRUE > >>>>>Warning messages: > >>>>>1: NaNs produced in: pgamma(q, shape, scale, lower.tail, log.p) > >>>>>2: NaNs produced in: pgamma(q, shape, scale, lower.tail, log.p) > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>>x0 <- -2 * 10^-c(22,10,7,5) > >>>>>>stopifnot(pbinom(x0, size = 3, prob = 0.1) == 0, > >>>>>+ dbinom(x0, 3, 0.1) == 0) # d*() warns about non-integer > >>>>>Warning messages: > >>>>>1: non-integer x = -0.000000 > >>>>>2: non-integer x = -0.000020 > >>>>>>## very small negatives were rounded to 0 in R 2.2.1 and earlier > >>>>>> > >>>>> > >>>>> > >>>>>I hope that this is helpful. Thanks are due to Peter Dalgaard for > >>>>>guidance. So, thanks Peter :). > >>>>> > >>>>>Cheers > >>>>> > >>>>>Andrew > >>>>> > >>>> > >>>>-- > >>>>Brian D. Ripley, [EMAIL PROTECTED] > >>>>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 > >>> > >>> > >> > >>-- > >>Brian D. Ripley, [EMAIL PROTECTED] > >>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 > > > > > > -- > Brian D. Ripley, [EMAIL PROTECTED] > 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 -- Andrew Robinson Department of Mathematics and Statistics Tel: +61-3-8344-9763 University of Melbourne, VIC 3010 Australia Fax: +61-3-8344-4599 Email: [EMAIL PROTECTED] http://www.ms.unimelb.edu.au ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel