Kolmogorov-Smirnov test

Egodym picture Egodym · Jan 26, 2015 · Viewed 12.2k times · Source

I'm using the R function ks.test() to test the Uniform distribution of the R random number generator. I'm using the following code: replicate(100000, ks.test(runif(n),y="punif").

When n is less than or equal to 100 it works, but when n is greater than 100 I get the following Warning Message:

In ks.test(runif(100000), y = "punif") :
  ties should not be present for the Kolmogorov-Smirnov test.

What are those "ties"?

Answer

Karolis Koncevičius picture Karolis Koncevičius · Jan 26, 2015

If you inspect the body of the function ks.test you will see the following line somewhere in the body:

if (length(unique(x)) < n) {
    warning("ties should not be present for the Kolmogorov-Smirnov test")
    TIES <- TRUE
}

This tells you that when the number of unique elements in x is below the number of elements - you will get this warning. In other words if your vector has duplicate entries - you will get the warning.

Most likely what happened is that when n > 100 there are more chances to get a duplicated value in there somewhere compared with using n = 100. Since you are repeating this thousands of times the probability for having two identical values in x goes up.

As an example this code didn't give me any warning:

set.seed(1234)
smth <- replicate(100000, ks.test(runif(101),y="punif"))