Lilliefors¶
- Lilliefors(sample, factory, level=0.05)¶
Perform a Lilliefors goodness-of-fit test for 1-d continuous distributions.
Refer to Kolmogorov-Smirnov fitting test.
- Parameters:
- sample2-d sequence of float
Tested sample.
- model
DistributionFactory
Tested distribution factory.
- levelfloat, , optional (default level = 0.05).
This is the risk of committing a Type I error, that is an incorrect rejection of a true null hypothesis.
- Returns:
- fitted_dist
Distribution
Estimated distribution (if model is of type
DistributionFactory
).- test_result
TestResult
Test result.
- fitted_dist
- Raises:
- TypeError
If the distribution is not continuous or if the sample is multivariate.
Notes
The distribution is estimated using the given factory based on the given sample and the distribution of the test statistics is estimated using a Monte Carlo approach. This algorithm is known as Lilliefors’s test [Lilliefors1967]. The Monte Carlo algorithm can be configured with the following keys in
ResourceMap
:FittingTest-LillieforsMinimumSamplingSize defining the minimum number of samples to generate in order to estimate the p-value. Default value is 10.
FittingTest-LillieforsMaximumSamplingSize defining the maximum number of samples to generate in order to estimate the p-value. Default value is 100000.
FittingTest-LillieforsPrecision defining the target standard deviation for the p-value estimate. Default value is 0.01.
Examples
>>> import openturns as ot >>> ot.RandomGenerator.SetSeed(0) >>> distribution = ot.Normal() >>> sample = distribution.getSample(30) >>> factory = ot.NormalFactory() >>> ot.ResourceMap.SetAsScalar('FittingTest-LillieforsPrecision', 0.05) >>> ot.ResourceMap.SetAsUnsignedInteger('FittingTest-LillieforsMinimumSamplingSize', 100) >>> ot.ResourceMap.SetAsUnsignedInteger('FittingTest-LillieforsMaximumSamplingSize', 1000) >>> fitted_dist, test_result = ot.FittingTest.Lilliefors(sample, factory) >>> fitted_dist class=Normal name=Normal dimension=1 mean=class=Point name=Unnamed dimension=1 values=[-0.0944924] sigma=class=Point name=Unnamed dimension=1 values=[0.989808] correlationMatrix=class=CorrelationMatrix dimension=1 implementation=class=MatrixImplementation name=Unnamed rows=1 columns=1 values=[1] >>> test_result class=TestResult name=Unnamed type=Lilliefors Normal binaryQualityMeasure=true p-value threshold=0.05 p-value=0.59 statistic=0.106933 description=[Normal(mu = -0.0944924, sigma = 0.989808) vs sample Normal] >>> pvalue = test_result.getPValue() >>> pvalue 0.59 >>> D = test_result.getStatistic() >>> D 0.1069... >>> quality = test_result.getBinaryQualityMeasure() >>> quality True