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

Lilliefors test for normality or an exponential distribution.

Kolmogorov Smirnov test with estimated mean and variance

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


Kolmogorov-Smirnov test statistic with estimated mean and variance.


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