我一直在尝试使用scipy.stats.genextreme来使我的数据符合广义极值分布。我已经尝试了所有可以找到的方法,但我不知道为什么它不适合数据。
我尝试过这两种方法:
import numpy as np
from matplotlib import pyplot as plt
from scipy.stats import genextreme as gev
dataN = [0.0, 0.0, 0.122194513716, 0.224438902743, 0.239401496259, 0.152119700748,
0.127182044888, 0.069825436409, 0.0299251870324, 0.0199501246883, 0.00997506234414,
0.00498753117207, 0.0]
t = np.linspace(1,13,13)
fit = gev.fit(dataN,loc=3)
pdf = gev.pdf(t, *fit)
plt.plot(t, pdf)
plt.plot(t, dataN, "o")
print(fit)
以及
popt, pcov = curve_fit(gev.pdf,t, dataN)
plt.plot(t,gev.pdf(*popt),'r-')
第二种方法产生了这个
" ValueError: Unable to determine number of fit parameters."
感谢你们给我的任何帮助!
答案 0 :(得分:2)
根据scipy.stats文档:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.genextreme.html
fit()方法使用原始数据,看起来您正在将调用中的分箱直方图数据传递给:
fit = gev.fit(dataN,loc=3)
尝试传入原始数据,看看它是否能够正常工作。