Я пытаюсь сделать GEV-соответствие, используя пакет genextreme в SciPy.Хотя я могу получить его для оценки параметров, я получаю предупреждение о том, что он делится на ноль.
Я попытался подогнать разные наборы данных, попытался установить разные начальные значения для параметра формы c, а также попыталсяумножить данные, например, на 100. Ничего из этого не сработало.Я использую Python 2.7.12 и SciPy 0.17.0.
Я новичок в Python и хотел сделать быстрый первый тест с моей существующей установкой.
Данные, приведенные в коде, примерно распределены по Гумбелю (c = 0), поскольку я проверил их на графике Гумбеля и выполнил подгонку по Гумбелю с использованием линейной регрессии.
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)
На основев моей линейной регрессии я ожидал параметр формы, близкий к 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))
Однако, очевидно, что значение присваивается a, так как:
>>> a
(0.16458924337692377, 3.1800328240261857, 0.37894174199431357)
Эти значения близки к тому, что я ожидал, но я не понимаюпредупреждение.