tlumley at u.washington.edu
2009-Dec-16 17:35 UTC
[Rd] apparently incorrect p-values from 2-sided Kolmogorov-Smirnov (PR#14151)
On Tue, 15 Dec 2009, allwrigh at maths.ox.ac.uk wrote; (in part)> > x<-1:5 > y<-c(2.5,4.5) > ks.test(x,y) > > The value of the D_2,5 statistic is calculated as 0.4 correctly, but the > p-value is stated by R as 1, though in fact it should be 20/21=0.9524What we seem to have here is a rounding error problem. In ks.c:psmirnov2x, there is a double loop including if(fabs(i / md - j / nd) > q) u[j] = 0; where md=2, nd=5, and q=3/10. Now, to full precision abs(1/2 - 4/5) > 3/10 is false, but at least on my MacBook it is true in C double precision. I'm not sure why the loop is working with doubles, since multiplying by m*n should make everything an integer. -thomas Thomas Lumley Assoc. Professor, Biostatistics tlumley at u.washington.edu University of Washington, Seattle