我已经知道“scipy.stats.exponweib”指的是指数威布尔分布,那么“scipy.stats.weibull_min”对应的是三参数威布尔分布,还是双参数威布尔分布,或者所谓的标准威布尔分布?从这两幅图可以看出,“标准威布尔分布”的公式
的数据与“scipy.stats.weibull_min”的公式完全相同
的什么是标准威布尔分布?最后,我想对我的数据拟合一个三参数威布尔分布,我应该使用“scipy.stats.weibull_min”吗?
4zcjmb1e1#
那么scipy.stats.weibull_min是否对应于三参数威布尔分布,或两参数威布尔分布,或所谓的标准威布尔分布?scipy.stats.weibull_min可以以这三种方式中的任何一种使用。对于c=2的标准威布尔分布:
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=2和scale=1.5的双参数Weibull分布:
scale=1.5
twoparam_weibull = stats.weibull_min(c=2, scale=1.5)
型对于c=2、scale=1.5和loc=-1的三参数Weibull分布:
loc=-1
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固定尺度。
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)
型
1条答案
按热度按时间4zcjmb1e1#
那么
scipy.stats.weibull_min
是否对应于三参数威布尔分布,或两参数威布尔分布,或所谓的标准威布尔分布?scipy.stats.weibull_min
可以以这三种方式中的任何一种使用。对于
c=2
的标准威布尔分布:字符串
对于
c=2
和scale=1.5
的双参数Weibull分布:型
对于
c=2
、scale=1.5
和loc=-1
的三参数Weibull分布:的字符串
的数据
最后,我想对我的数据拟合一个三参数威布尔分布,我应该使用“scipy.stats.weibull_min”吗?
是的。如果您想将双参数威布尔拟合到数据中,您可以使用
floc=0
固定位置。如果您想将标准威布尔拟合到数据中,您还可以使用fscale=1
固定尺度。型