Python中Weibull分布适配度检验

2024-09-30 06:17:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据需要测试,看看它是否来自参数未知的Weibull distribution。在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进行这样的测试?在


Tags: 数据httpsorgprojectweb参数indexpackages
2条回答

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())

更多详情请访问:

一种方法:估计分布参数,从估计的分布中提取数据并运行KS测试,以检查两个样本是否来自同一个分布。在

让我们创建一些“原始”数据:

>>> values = scipy.stats.weibull_min.rvs( 0.33, size=1000)

现在

^{pr2}$

最后一行相当于:

 scipy.stats.ks_2samp(values, scipy.stats.weibull_min.rvs(*args, size=100000))

所以,一旦你估计了分布的参数,你就可以非常可靠地测试它。但是scipy估计值不是很好,我花了好几次运行才得到与原始分布更接近的结果。在

相关问题 更多 >

    热门问题