我尝试使用scipy.genextreme.fit
将GEV拟合到一些数据,例如。
from scipy.stats import genextreme as gev
import numpy as np
# Generate some random data
data = np.random.normal(size=1000)
# Fit the data to a GEV distribution
params = gev.fit(data)
print(params)
如果我想拟合GEV并保持形状参数的值固定(例如0.5),我只需要做:
params = gev.fit(data,f0=0.5)
我实际上想要的是拟合GEV,并将形状参数的值保持在一定范围内(例如在-0.5和0.5之间)。我试过:
params = gev.fit(data,f0=[-0.5,0.5]) #Does not work
scipy可以指定拟合参数的范围吗?
1条答案
按热度按时间lrpiutwd1#
我已经找到了一些关于如何使用
scipy.optimize.minimize
来做我想做的事情的答案我从GEV生成随机数据,并使用“www.example.com”拟合它们scipy.stats.genextreme.fit,并比较我从
scipy.optimize.minimize
获得的4个不同边界的结果:输出如下所示:
因此,当Bounds未指定或设置为None时,我们得到的结果非常接近预期值(从fit获得),但在其他情况下(参数在指定范围内,但它们没有预期值)失败。为什么?
最后一点,如果我使用了一个负值的形状参数,例如:c=-0.25,“我的选择”现在产生与Unspecified和None相同的值: