首页 > 解决方案 > python中Weibull分布的拟合优度检验

问题描述

我有一些数据需要测试,看看它是否来自具有未知参数的Weibull 分布。R中我可以使用https://cran.r-project.org/web/packages/KScorrect/index.html但我在 Python 中找不到任何东西。

使用 scipy.stats 我可以拟合参数:

scipy.stats.weibull_min.fit(values)

然而,为了把它变成一个测试,我认为我需要执行一些蒙特卡罗模拟(例如https://en.m.wikipedia.org/wiki/Lilliefors_test)我不知道该怎么做。

如何在 Python 中进行这样的测试?

标签: pythonscipystatisticsweibullopenturns

解决方案


Lilliefors 测试在OpenTURNS中实现。为此,您必须使用与您想要适应的分布相对应的工厂。在以下脚本中,我模拟了大小为 10 的 Weibull 样本,并使用等于 1000 的样本大小执行 Kolmogorov-Smirnov 检验。这意味着 KS 统计量被模拟了 1000 次。

import openturns as ot
sample=ot.WeibullMin().getSample(10)
ot.ResourceMap.SetAsUnsignedInteger("FittingTest-KolmogorovSamplingSize",1000)
distributionFactory = ot.WeibullMinFactory()
dist, result = ot.FittingTest.Kolmogorov(sample, distributionFactory, 0.01)
print('Conclusion=', result.getBinaryQualityMeasure())
print('P-value=', result.getPValue())

更多细节可以在以下位置找到:


推荐阅读