Я не могу соответствовать распределению Максвелла из-за ошибки «деление на ноль, встречающееся в журнале» - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь согласовать распределение Максвелла со значениями, включенными в этот файл .

Так как мне нужно форсировать lo c из 0, Я использую выражение:

params = st.maxwell.fit(values, floc=0)

Однако, это терпит неудачу с ошибкой «деление на ноль в журнале»:

Я считаю, что PDF с loc = 0 и масштабом около 11000 было бы неплохо.

PDF Example for this dataset

Как я могу обойти эту проблему и заставить установку работать?

1 Ответ

3 голосов
/ 18 января 2020

Код, который максимизирует логарифмическую правдоподобие, запускает недостаточное значение, потому что его начальное предположение по умолчанию для параметра масштаба равно 1, что довольно далеко от фактического оптимума. Вы можете передать более точное предположение fit с аргументом scale. Хорошее предположение дает метод моментов, который в данном случае означает использование выборочного среднего для оценки параметра масштаба. На странице Википедии о распределении Максвелла-Больцмана приведена формула для среднего значения μ в виде шкалы a. Решение для a дает:

In [19]: a = np.mean(values)/(2*np.sqrt(2/np.pi))

In [20]: a
Out[20]: 10587.275841415043

Теперь передайте это значение fit в качестве аргумента scale, который переопределяет начальное значение по умолчанию, используемое кодом оптимизации:

In [21]: p = maxwell.fit(values, floc=0, scale=a)

In [22]: p
Out[22]: (0, 10455.558876443883)

Это максимальная оценка вероятности для местоположения (которое вы установили на 0) и шкалы a.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...