2011-09-21 14 views
8

Ho notato che il test di Fisher esatto in SciPy restituisce un valore p negativo se il valore p è piccolo extrememly:Perché SciPy restituisce valori p negativi per valori p estremamente piccoli con il test esatto di Fisher?

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

In R, utilizzando la stessa tabella 2x2 contingenza:

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

La mia domanda è 1) perché SciPy restituisce un p-value negativo? 2) come posso usare SciPy per generare il valore p corretto?

Grazie per l'aiuto.

risposta

10

Il test esatto di Fisher utilizza la distribuzione ipergeometrica.

La versione di scipy in uso utilizza un'implementazione della distribuzione ipergeometrica non molto precisa. Questo è un known problem ed è stato corretto nel repository scipy.

+1

Grazie per la spiegazione e il collegamento. Questo era esattamente quello che stavo cercando. – drbunsen

Problemi correlati