python 拟合分布,python数据概率分布拟合
我希望使用Python 3.4为一组数据找到最合适的(统计学家)威伯尔(或韦布尔)参数。
将scipy.stats作为悬浮物导入
list1=[]
list2=[]
对于范围(0,10)内的x:
清单1。追加(ss。expon weib。pdf(x,a=1,c=2.09,scale=10.895,loc=0))
清单2。追加(ss。Weibull _ min。pdf(x,c=2.09,loc=0,scale=10.895))
如果列表1[x]列表2[x] .000000001:
列表1[x]=列表2[x]
如果列表1==列表2:
打印("真")
打印(不锈钢。分发。Weibull _ min。fit(列表1,floc=0))
打印(不锈钢。分发。Weibull _ min。fit(列表1,loc=0))
打印(不锈钢。分发。Weibull _ min。fit(列表1,floc=0))
打印(不锈钢。分发。expon weib。fit(列表1,1,1))
打印(不锈钢。分发。expon weib。fit(列表1,floc=0,f0=1))
打印(不锈钢。分发。expon weib。fit(列表1,floc=0,a=1,f0=1))
我尝试过的所有内容都没有产生输入参数,我无法弄清楚原因。
此代码的输出是:
真实的
(2.8971366871403661, 0, 0.065615284314998634)
(0.71134622938358294, 0.014105558832066645, 0.076662586739229072)
(2.8971366871403661, 0, 0.065615284314998634)
(0.27753056922336583,3.1962672780921197,-3.4780711110631162 e-27,0.19626445。38645
(1, 2.8971366871403661, 0, 0.065615284314998634)
(1, 2.8971366871403661, 0, 0.065615284314998634)
这些都不是正确的输入参数。(2.09和10.895.)任何帮助表示赞赏。谢谢。
解决方法:
适合()方法的第一个参数是要适合的分布的值的样本(不是便携文档格式值).所以你应该使用rvs()方法来生成数据,而不是pdf()方法。
这是一个简单的例子,我从exponweib发行版中生成250个值的样本,然后在该样本上使用适合()。我假设当我拟合数据时,我知道形状参数a必须为一且通信线路(通信线路)参数必须为0:
在[178]:来自scipy.stats导入导出
在[179]:样本=指数weib。RVs(a=1,c=2.09,scale=10.895,loc=0,size=250)
In [180]: exponweib.fit(sample,floc=0,fa=1)
Out[180]: (1,2.082583185068915,0,10)56586。58676767667
标签:python,python-3-x,scipy
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。