statsmodels.stats.diagnostic.kstest_normal(x, dist='norm', pvalmethod='approx')

Lilliefors test for normality or an exponential distribution.

Kolmogorov Smirnov test with estimated mean and variance

  • x (array_like, 1d) – data series, sample
  • dist ({'norm', 'exp'}, optional) – Distribution to test in set.
  • pvalmethod ({'approx', 'table'}, optional) –

    ‘approx’ is only valid for normality. if dist = ‘exp’, table is returned. ‘approx’ uses the approximation formula of Dalal and Wilkinson, valid for pvalues < 0.1. If the pvalue is larger than 0.1, then the result of table is returned

    For normality: ‘table’ uses the table from Dalal and Wilkinson, which is available for pvalues between 0.001 and 0.2, and the formula of Lilliefors for large n (n>900). Values in the table are linearly interpolated. Values outside the range will be returned as bounds, 0.2 for large and 0.001 for small pvalues. For exponential: ‘table’ uses the table from Lilliefors 1967, available for pvalues between 0.01 and 0.2. Values outside the range will be returned as bounds, 0.2 for large and 0.01 for small pvalues.


  • ksstat (float) – Kolmogorov-Smirnov test statistic with estimated mean and variance.
  • pvalue (float) – If the pvalue is lower than some threshold, e.g. 0.05, then we can reject the Null hypothesis that the sample comes from a normal distribution


Reported power to distinguish normal from some other distributions is lower than with the Anderson-Darling test.

could be vectorized