# Kolmogorov-Smirnov test fails to recognize a normally distributed sample

I created a sample with 10000 normally distributed numbers. Subsequently, I used the Kolmogorov-Smirnov test to check if they are indeed normally distributed, and it turned out that they are not. How is this possible?

Below is my code.

data <- rnorm(n=10000, 5, 2)
ks.test(data, "pnorm")


Exact one-sample Kolmogorov-Smirnov test

data: data D = 1, p-value < 2.2e-16 alternative hypothesis: two-sided

• Hint: What distribution is the rnorm in your code drawing from? What distribution is pnorm defining? Aug 3 at 6:14
• If you test at a level of 5%, as you know, 5% of the samples will be rejected under the null. Aug 3 at 6:17
• @AlexJ rnorm generates 1000 normally distributed numbers. Then, I am trying to see if they follow the normal distribution (pnorm). Therefore, the null hypothesis should not be rejected. Aug 3 at 6:51
• @utobi , I filled in the answer provided by R. Aug 3 at 6:53
• You should make a habit of using set.seed() to make the random values reproducible. But to the point: If not specified, ks.test will test against a standard normal. So you should use ks.test(data, "pnorm", 5, 2). But please remember that the KS-test assumes the parameters to be known a priori and not estimated from the data. Also pay close attention to what utobi said. Finally, no normality test can confirm that your sample is normally distributed. Non-significance does not mean "normally distributed". Aug 3 at 7:04

As highlighted in the comments (Alex J and COOLSerdash), there are two issues here. First, the model used under the KS test is different from the true model that generated the data. The correct way would be either

> set.seed(12)
> set.seed(30823)
> data <- rnorm(n=10000, 5, 2)
> ks.test(data, "pnorm", mean=5, sd=2)

Asymptotic one-sample Kolmogorov-Smirnov test

data:  data
D = 0.0044899, p-value = 0.9877
alternative hypothesis: two-sided


or

> data1 <- rnorm(n=10000)
> ks.test(data1, "pnorm")

Asymptotic one-sample Kolmogorov-Smirnov test

data:  data1
D = 0.01079, p-value = 0.1947
alternative hypothesis: two-sided


Second (a minor issue), the test if used at level 0.05 has still (approximately) 5% of a chance to reject the null even if the null is true.

• Thank you for your response. The issue has been resolved. Aug 3 at 8:29