Почему SciPy возвращает отрицательные значения p для чрезвычайно малых значений p с помощью точного критерия Фишера? - PullRequest
8 голосов
/ 21 сентября 2011

Я заметил, что точный критерий Фишера в SciPy возвращает отрицательное значение p, если значение p крайне мало:

>>> import scipy as sp
>>> import scipy.stats
>>> x = [[48,60],[3088,17134]]
>>> sp.stats.fisher_exact(x)
(4.4388601036269426, -1.5673906617053035e-11)

В R, используя ту же таблицу непредвиденных обстоятельств 2x2:

> a = matrix(c(48,60,3088,17134), nrow=2)
> fisher.test(a)
p-value = 6.409e-13

Мой вопрос: 1) почему SciPy возвращает отрицательное значение p? 2) как я могу использовать SciPy для генерации правильного p-значения?

Спасибо за помощь.

1 Ответ

10 голосов
/ 21 сентября 2011

Точный критерий Фишера использует гипергеометрическое распределение.

В используемой вами версии scipy используется гипергеометрическое распределение, которое не очень точное. Это известная проблема , и она была исправлена ​​в хранилище scipy.

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