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

2024-09-24 22:24:47 发布

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

我正在寻找最适合使用python3.4的一组数据的weibull参数。在

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

我所做的一切都不能产生输入参数,我不知道为什么。在

此代码的输出为:

^{pr2}$

它们都不是正确的输入参数。感谢任何帮助。谢谢。在


Tags: 参数pdfminsslocfitdistributionsprint
1条回答
网友
1楼 · 发布于 2024-09-24 22:24:47

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)

相关问题 更多 >