python - 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 中进行这样的测试?
解决方案
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())
更多细节可以在以下位置找到:
推荐阅读
- postgresql - 'DISABLE TRIGGER ALL' 是否也会禁用 Postgres 中的域检查?
- javascript - 通过道具将功能从类组件编辑状态传递到基于功能的组件不起作用
- identityserver4 - IdentityServer4 Windows 身份验证缺少回调实现
- java - Kafka Consumer 中更好的错误处理方式
- javascript - 如何在 vue 中全局配置 vee-validate?
- firebase - 如何从 Firebase 存储中获取可公开访问的 URL?
- java - 如何使用 ProcessBuilder 在 Java、MacOS 中运行 ffmpeg 命令
- javascript - Javascript:交互 setTimeout() 和 window.location.assign()
- bash - 如何“包装” bash 命令并解析参数
- python - 对象没有属性“object_list”