如何使用python将weibull分布拟合到数据?

时间:2016-01-20 19:12:59

标签: python python-3.x scipy

我希望使用Python 3.4为一组数据找到最合适的weibull参数。

true
(2.8971366871403661, 0, 0.065615284314998634)
(0.71134622938358294, 0.014105558832066645, 0.076662586739229072)
(2.8971366871403661, 0, 0.065615284314998634)
(0.27753056922336583, 3.1962672780921197, -3.4788071110631162e-27, 0.077986010645321888)
(1, 2.8971366871403661, 0, 0.065615284314998634)
(1, 2.8971366871403661, 0, 0.065615284314998634)

我尝试的所有内容都没有产生输入参数,我无法弄清楚原因。

此代码的输出为:

@Id

其中没有一个是正确的输入参数。 (2.09和10.895。)任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:6)

fit()方法的第一个参数是来自要适合的分布的值的样本(不是PDF值)。因此,您应该使用rvs()方法生成数据,而不是pdf()方法。

这是一个简单的示例,我从exponweib分布生成250个值的样本,然后在该样本上使用fit()。我假设当我拟合数据时,我知道形状参数a必须为1且loc参数必须为0:

In [178]: from scipy.stats import exponweib

In [179]: sample = exponweib.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.0822583185068915, 0, 10.946962241403902)