2011-09-21 30 views
8

me he dado cuenta de que la prueba exacta de Fisher-en SciPy devuelve un p-valor negativo si el valor de p es extremadamente pequeña:¿Por qué SciPy arroja valores p negativos para valores p extremadamente pequeños con la prueba exacta de Fisher?

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

En R, utilizando la misma tabla de contingencia 2x2:

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

Mi pregunta es 1) ¿por qué SciPy devuelve un p-valor negativo? 2) ¿cómo puedo usar SciPy para generar el valor p correcto?

Gracias por la ayuda.

Respuesta

10

La prueba exacta de Fisher utiliza la distribución hipergeométrica.

La versión de scipy que está utilizando utiliza una implementación de la distribución hipergeométrica que no es muy precisa. Este es un known problem y se ha corregido en el repositorio scipy.

+1

Gracias por la explicación y el enlace. Esto era exactamente lo que estaba buscando. – drbunsen

Cuestiones relacionadas