2011-09-21 8 views
8

Iは、p値がextrememly小さい場合scipyのダウンロードにおけるフィッシャー正確検定が否定的p値を返すことに気づいた:Rでフィッシャー正確なテストで、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) 

を、同じ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

フィッシャーの正確確率検定は、超幾何分布を使用します。

使用しているscipyのバージョンは、あまり正確ではない超幾何分布の実装を使用しています。これはknown problemであり、scipyリポジトリで修正されています。

+1

説明とリンクをありがとう。これはまさに私が探していたものでした。 – drbunsen

関連する問題