2012-10-09 13 views
11

両方のpythonのscipy.stats.ranksumsとRのwilcox.testは、Wilcoxonランクサムテストのための両面p値を計算することになっています。私は、同一のデータの両方の機能を実行したときしかし、私は桁違いに異なるp値を取得する:pythonのscipy.stats.ranksumsとRのwilcox.test

R:

> x=c(57.07168,46.95301,31.86423,38.27486,77.89309,76.78879,33.29809,58.61569,18.26473,62.92256,50.46951,19.14473,22.58552,24.14309) 
> y=c(8.319966,2.569211,1.306941,8.450002,1.624244,1.887139,1.376355,2.521150,5.940253,1.458392,3.257468,1.574528,2.338976) 
> print(wilcox.test(x, y)) 

     Wilcoxon rank sum test 

data: x and y 
W = 182, p-value = 9.971e-08 
alternative hypothesis: true location shift is not equal to 0 

のPython:

>>> x=[57.07168,46.95301,31.86423,38.27486,77.89309,76.78879,33.29809,58.61569,18.26473,62.92256,50.46951,19.14473,22.58552,24.14309] 
>>> y=[8.319966,2.569211,1.306941,8.450002,1.624244,1.887139,1.376355,2.521150,5.940253,1.458392,3.257468,1.574528,2.338976] 
>>> scipy.stats.ranksums(x, y) 
(4.415880433163923, 1.0059968254463979e-05) 

だから、Rは私に1Eを与えます-7の間にPythonが私に1e-5を与える。

この違いはどこから来て、どれが「正しい」p値ですか。

答えて

19

それは(または連続性補正なしで、正確な正規近似VS)オプションの選択に依存する:

Rのデフォルト:(「正確」が指定されていない場合)デフォルトで

、サンプルが50未満の有限値を含み、 の関係がない場合、正確なp値が として計算されます。それ以外の場合は、通常の近似が使用されます。

デフォルト(上記のように):

wilcox.test(x, y) 

    Wilcoxon rank sum test 

data: x and y 
W = 182, p-value = 9.971e-08 
alternative hypothesis: true location shift is not equal to 0 

連続性補正と正規近似:

> wilcox.test(x, y, exact=FALSE, correct=TRUE) 

    Wilcoxon rank sum test with continuity correction 

data: x and y 
W = 182, p-value = 1.125e-05 
alternative hypothesis: true location shift is not equal to 0 

連続性補正を行わずに、通常の近似値:もう少しについて

> (w0 <- wilcox.test(x, y, exact=FALSE, correct=FALSE)) 

    Wilcoxon rank sum test 

data: x and y 
W = 182, p-value = 1.006e-05 
alternative hypothesis: true location shift is not equal to 0 

精度:

w0$p.value 
[1] 1.005997e-05 

Pythonは(4.415880433163923)あなたを与えている他の値はZスコアであるように見えます:

2*pnorm(4.415880433163923,lower.tail=FALSE) 
[1] 1.005997e-05 

私は何が起こっているのか知りたい鑑賞することができますが、私にもあることを指摘しますp=1e-7p=1e-5の間に実際的な違いはほとんどありません。

+0

はい、Scipyはここでzスコアを返します。 http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ranksums.html –

+1

私は、綴りを具体的に扱わなければならない可能性がある、繋ぎ合わせをするときに違いがあると思います。 – seberg

+0

説明ありがとうございます! Scipyに厳密なp値を計算させ、結びつきを処理させる方法があるかどうか知っていますか?私はScipyにscipy.stats.mannwhitneyuという別の機能があることを知っています。これは結びつきを処理して連続性の修正を行いますが、これはまだ正確ではなく、ドキュメントには少なくとも20個のサンプルが必要です。 – Nils

関連する問題