1 つのサンプルが他のサンプルよりも有意に大きいかどうかに関心があるため、ペア データに対して片側ウィルコクソン順位検定を実行したいと考えています。
Scipy オファー
scipy.stats.wilcoxon(x,y)
ペアのサンプル x と y を使用して両側検定を実行します。正規 (対称) 分布を想定できないため、両側 p 値から片側 p 値を導き出すことはできません。
片側検定の p 値を取得する Python の方法はありますか?
ありがとう!
1 つのサンプルが他のサンプルよりも有意に大きいかどうかに関心があるため、ペア データに対して片側ウィルコクソン順位検定を実行したいと考えています。
Scipy オファー
scipy.stats.wilcoxon(x,y)
ペアのサンプル x と y を使用して両側検定を実行します。正規 (対称) 分布を想定できないため、両側 p 値から片側 p 値を導き出すことはできません。
片側検定の p 値を取得する Python の方法はありますか?
ありがとう!
によって返される P 値は、またはscipy.stats.wilcoxon
の分布とも関係なく、それらの差とも関係ありません。これは、ウィルコクソン検定統計量 ( http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_testの場合は W 、または の場合は T ) によって決定され、正規分布に従うと想定されます。ソース ( ~python_directory\site-packages\scipy\stats\morestats.py 内) を確認すると、次の最後の数行が見つかります。x
y
scipy
def wilcoxon()
se = sqrt(se / 24)
z = (T - mn) / se
prob = 2. * distributions.norm.sf(abs(z))
return T, prob
と:
mn = count*(count + 1.) * 0.25
se = count*(count + 1.) * (2. * count + 1.)
count
と の間の非ゼロ差の数はどこにx
ありますかy
。
したがって、片側p値を取得するには、prob/2.
または1-prob/2.
例: でPython
:
>>> y1=[125,115,130,140,140,115,140,125,140,135]
>>> y2=[110,122,125,120,140,124,123,137,135,145]
>>> ss.wilcoxon(y1, y2)
(18.0, 0.5936305914425295)
でR
:
> wilcox.test(y1, y2, paired=TRUE, exact=FALSE, correct=FALSE)
Wilcoxon signed rank test
data: y1 and y2
V = 27, p-value = 0.5936
alternative hypothesis: true location shift is not equal to 0
> wilcox.test(y1, y2, paired=TRUE, exact=FALSE, correct=FALSE, alt='greater')
Wilcoxon signed rank test
data: y1 and y2
V = 27, p-value = 0.2968
alternative hypothesis: true location shift is greater than 0
十分な観察結果 (および他の仮説) がある場合は、scipy Mann-Withney 検定が片側であることを思い出してください。