2011-09-21 42 views
8

我注意到在SciPy的費 - 精確檢驗返回一個負的p值,如果p值extrememly小:爲什麼SciPy通過Fisher精確檢驗爲極小的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,使用相同的2×2列聯表:

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

我的問題是1)爲什麼SciPy會返回一個負p值? 2)我如何使用SciPy來生成正確的p值?

感謝您的幫助。

回答

10

Fisher精確檢驗使用超幾何分佈。

您正在使用的scipy版本使用的超幾何分佈的實現不是非常精確。這是一個known problem並已在scipy存儲庫中修復。

+1

感謝您的解釋和鏈接。這正是我正在尋找的。 – drbunsen

相關問題