“SciPy. Stats. Weibull_min”表示哪种类型的Weibull函数?

lskq00tm  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(155)

我已经知道“scipy.stats.exponweib”指的是指数威布尔分布,那么“scipy.stats.weibull_min”对应的是三参数威布尔分布,还是双参数威布尔分布,或者所谓的标准威布尔分布?
从这两幅图可以看出,“标准威布尔分布”的公式


的数据
与“scipy.stats.weibull_min”的公式完全相同



什么是标准威布尔分布?
最后,我想对我的数据拟合一个三参数威布尔分布,我应该使用“scipy.stats.weibull_min”吗?

4zcjmb1e

4zcjmb1e1#

那么scipy.stats.weibull_min是否对应于三参数威布尔分布,或两参数威布尔分布,或所谓的标准威布尔分布?
scipy.stats.weibull_min可以以这三种方式中的任何一种使用。
对于c=2的标准威布尔分布:

from scipy import stats
# by default, `loc=0` and `scale=1`
standard_weibull = stats.weibull_min(c=2)

字符串
对于c=2scale=1.5的双参数Weibull分布:

twoparam_weibull = stats.weibull_min(c=2, scale=1.5)


对于c=2scale=1.5loc=-1的三参数Weibull分布:

treparam_weibull = stats.weibull_min(c=2, scale=1.5, loc=-1)
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2, 4, 300)
pdf1 = standard_weibull.pdf(x)
pdf2 = twoparam_weibull.pdf(x)
pdf3 = treparam_weibull.pdf(x)

plt.plot(x, pdf1, label='standard')
plt.plot(x, pdf2, label='two-parameter')
plt.plot(x, pdf3, label='three-parameter')
plt.legend()

的字符串


的数据
最后,我想对我的数据拟合一个三参数威布尔分布,我应该使用“scipy.stats.weibull_min”吗?
是的。如果您想将双参数威布尔拟合到数据中,您可以使用floc=0固定位置。如果您想将标准威布尔拟合到数据中,您还可以使用fscale=1固定尺度。

data = standard_weibull.rvs(size=100)
treparam_params = stats.weibull_min.fit(data)
# (1.9201813763802515, 0.009596546763289675, 0.9715998168668463)
twoparam_params = stats.weibull_min.fit(data, floc=0)
# (1.9440072272633722, 0, 0.9547611987999606)
standard_params = stats.weibull_min.fit(data, floc=0, fscale=1)
# (1.9773521741819526, 0, 1)

相关问题