From tlumley at u.washington.edu  Wed Dec 16 18:32:56 2009
From: tlumley at u.washington.edu (tlumley at u.washington.edu)
Date: Wed, 16 Dec 2009 09:32:56 -0800 (PST)
Subject: [Rd] apparently incorrect p-values from 2-sided
 Kolmogorov-Smirnov test (PR#14145)
In-Reply-To: <20091215170510.225BA282EFEA@mail.pubhealth.ku.dk>
Message-ID: <alpine.LRH.2.01.0912160932560.32190@hymn32.u.washington.edu>

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.9524


What 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



[Rd] apparently incorrect p-values from 2-sided Kolmogorov-Smirnov test (PR#14145)
tlumley at u.washington.edu