首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将weibull分布与使用python的数据相匹配?

如何将weibull分布与使用python的数据相匹配?
EN

Stack Overflow用户
提问于 2016-01-20 19:12:58
回答 1查看 7.8K关注 0票数 4

我希望使用Python3.4为一组数据找到最合适的weibull参数。

代码语言:javascript
复制
import scipy.stats as ss
list1 = []
list2 = []
for x in range(0, 10):
    list1.append(ss.exponweib.pdf(x, a=1, c=2.09, scale=10.895, loc=0))
    list2.append(ss.weibull_min.pdf(x, c=2.09, loc=0, scale=10.895))
    if list1[x]-list2[x] < .000000001:
        list1[x]=list2[x]

if list1 == list2:
    print("true")

print(ss.distributions.weibull_min.fit(list1, floc=0))
print(ss.distributions.weibull_min.fit(list1, loc=0))
print(ss.distributions.weibull_min.fit(list1, floc=0))
print(ss.distributions.exponweib.fit(list1, 1,1))
print(ss.distributions.exponweib.fit(list1, floc=0, f0=1))
print(ss.distributions.exponweib.fit(list1, floc=0, a=1, f0=1))

我尝试过的每一件事都不会产生输入参数,我也不知道为什么。

此代码的输出是:

代码语言:javascript
复制
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)

其中没有一个是正确的输入参数。(2.09及10.895.)任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-21 10:50:52

fit()方法的第一个参数是要适合的发行版中的值示例(而不是PDF值)。因此,您应该使用rvs()方法来生成数据,而不是pdf()方法。

下面是一个简单的示例,其中我从exponweib发行版生成250个值的示例,然后在该示例中使用fit()。我假设当我拟合数据时,我知道形状参数a必须是1,而loc参数必须是0:

代码语言:javascript
复制
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)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34908492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档