python - 将数据拟合到广义极值分布

标签 python statistics curve-fitting

我一直在尝试使用 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-')

This is the result I got for the first one

第二种方法导致了这个

" ValueError: Unable to determine number of fit parameters."

感谢您能给我的任何帮助!

最佳答案

根据 scipy.stats 文档:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.genextreme.html

fit() 方法使用原始数据,看起来您在调用中传递了分箱直方图数据:

fit = gev.fit(dataN,loc=3)

尝试传入原始数据,看看它是否按您的需要工作。

关于python - 将数据拟合到广义极值分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43411581/

相关文章:

python - 根据另一列的多个条件修改一列值

python - 我正在尝试使用 numpy 模块创建和实现一个在 Python 中识别数据集中异常值的函数,不断获取 'ValueError'

python - numpy polyfit 中使用的权重值是多少,拟合误差是多少

machine-learning - 二元分类 NN 给出了非常低的误报率和非常高的误报率。谁能解释

python - 在 python 中拟合 2D Y 数据

matlab - 使用 polyfit 进行垂直线拟合

python - 如何在 VS Code 中为 pylint 设置工作目录?

python - Scikit-learn:覆盖分类器中的类方法

python - 如何使用 webapp2 添加 auth_id?

python - 如何在 Python 中计算 cohen's d?