Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 西皮:什么';使用loc=0和floc=0的拟合之间的差异是多少?_Python_Numpy_Scipy - Fatal编程技术网

Python 西皮:什么';使用loc=0和floc=0的拟合之间的差异是多少?

Python 西皮:什么';使用loc=0和floc=0的拟合之间的差异是多少?,python,numpy,scipy,Python,Numpy,Scipy,当我拟合威布尔分布时,在其他问题中也发现 使用floc=0进行拟合与loc=0 weibull_params = 1, 2.0755160030790547, 0, 16.273031221223277 data = sp.stats.exponweib.rvs(*weibull_params, size=50000) data = data.astype(int) x = linspace(0, 55) weibull_params1 = sp.stats.weibull_min.fit(d

当我拟合威布尔分布时,在其他问题中也发现

使用
floc=0
进行拟合与
loc=0

weibull_params = 1, 2.0755160030790547, 0, 16.273031221223277
data = sp.stats.exponweib.rvs(*weibull_params, size=50000)
data = data.astype(int)
x = linspace(0, 55)

weibull_params1 = sp.stats.weibull_min.fit(data)
weibull_params2 = sp.stats.weibull_min.fit(data, loc=0)
weibull_params3 = sp.stats.weibull_min.fit(data, floc=0)

for weibull_params, line_style in zip([weibull_params1, weibull_params2, weibull_params3],['-','--','-.']):
    plt.figure()
    plt.hist(data, bins=arange(0,55),alpha=0.5, normed=True)
    y_weibull = sp.stats.weibull_min.pdf(x, *weibull_params)
    plot(x, y_weibull, line_style, color='black') 
    print(weibull_params)
将产生如下的威布尔函数:

威布尔参数:

(0.50240047370945606, -4.501644985259555e-28, 2.9918077253782287)
(2.0610053128948245, -0.45099484072568979, 16.299110670854041) #loc=0
(1.0, 0, 1.05) #floc=0

有什么区别?什么时候应该使用哪一个?

简短的回答是:
floc
(和
fscale
)用于指定位置参数(和比例参数分别)保持固定在指定值
loc
scale
仅给出配合的起始值

sp.stats.weibull\u min
继承了
scipy.stat.rv\u continuous
fit
方法。指定了
floc
fscale
保持所述参数固定的事实
loc
scale
和派生分布识别的其他关键字参数仅用作起始值


因此,如果您想要拟合保持位置固定,您应该使用
floc=0
如果您只想提供一个起始参数,您应该使用
loc=0

,所以Weibull_min的拟合方法似乎不是很好?因为没有
loc=0的结果比将其设置为初始值差得多?