scipy.stats.t.logsf бесконечные значения - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть оценка 69,667, когда мои степени свободы 726 logsf возвращает следующее:

>>> scipy.stats.t.logsf(69.667, 726)
-744.4400719213812

Однако при df = 727 я получаю следующее

>>> scipy.stats.t.logsf(69.667, 727)
-inf

Может кто-нибудь объяснить, как я здесь достигаю ограничения по количеству? Причина, по которой я использовал функцию выживания журнала, состоит в том, чтобы избежать этой проблемы Есть ли другой способ решения этой проблемы?

1 Ответ

1 голос
/ 28 апреля 2019

Реализация t-распределения в SciPy не переопределяет метод _logsf, поэтому по умолчанию вычисляется журнал функции sf:

In [24]: t.sf(69.667, [726, 727])                                                                                                                                    
Out[24]: array([5.e-324, 0.e+000])

In [25]: np.log(t.sf(69.667, [726, 727]))                                                                                                                            
/.../ipython:1: RuntimeWarning: divide by zero encountered in log

Out[25]: array([-744.44007192,          -inf])

Кстати, 5e-324 - это 64-битное число с плавающей запятой с наименьшей величиной, отличное от нуля (это ненормальное число ), так что результат имеет всего 1 бит точности. Не слишком доверяйте всем этим цифрам в -744.44007192, возвращаемым t.logsf(69.667, 726).

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