我正在尝试使用 SciPy 中的 genextreme 包进行 GEV 拟合。虽然我可以用它来估计参数,但我收到一条警告,指出它除以零。
我尝试拟合不同的数据集,尝试为形状参数 c 设置不同的初始值,还尝试将数据乘以例如 100。但这些都不起作用。我正在使用 Python 2.7.12 和 SciPy 0.17.0。
我是 Python 新手,想对现有安装进行快速的首次测试。
代码中给出的数据大致是 Gumbel 分布的 (c=0),因为我已经在 Gumbel 图上检查了它并使用线性回归进行了 Gumbel 拟合。
import numpy as np
from scipy.stats import genextreme as gev
t=np.array([3.8482, 3.6435, 3.0417, 4.0329, 3.2967, 3.3535, 3.6179, 3.3042, 3.6164, 3.5855, 2.7932, 2.8833, 2.6513, 2.7794, 3.2649, 3.2613, 3.1736, 3.1131, 3.3896, 4.2891])
a=gev.fit(t)
Run Code Online (Sandbox Code Playgroud)
根据我的线性回归,我预计形状参数接近 c=0,位置参数接近 3.15,尺度参数接近 0.39。实际结果是:
/usr/lib/python2.7/dist-packages/scipy/stats/_continuous_distns.py:1776: RuntimeWarning: invalid value encountered in true_divide
np.sign(c)*(-g3+(g2+2*g2mg12)*g1)/((g2mg12)**(3./2.)))
/usr/lib/python2.7/dist-packages/scipy/stats/_continuous_distns.py:1781: RuntimeWarning: invalid value encountered in true_divide
(g4+(-4*g3+3*(g2+g2mg12)*g1)*g1)/((g2mg12)**2))
Run Code Online (Sandbox Code Playgroud)
然而,显然给 a …