pythonでマンホイットニーのU検定する方法。
scipyを使う。
from scipy import stats stats.mannwhitneyu(x, y, use_continuity=True, alternative=None)
alternativeは'less','greater','two-sided'。Noneの時は'two-sided'
p値は返り値のpvalueで取れる。
- テストコード
import numpy as np import matplotlib.pyplot as plt from scipy import stats # data generate x = np.random.normal(0,10,size=100) y = np.random.normal(5,10,size=100) # visualize bins = np.linspace(-40,50,18) plt.hist(x,bins,alpha=0.5) plt.hist(y,bins,alpha=0.5) # hypothesis testing result = stats.mannwhitneyu(x,y) print(result.pvalue) plt.show()
0.000717788454812
- 解釈:
p=0.0007<0.05なので、「この2群の中央値が等しい」という帰無仮説が棄却される。
つまり、中央値が異なることが分かったということ。
(※マンホイットニーU検定は平均値ではなく中央値を見ていることに注意)
参考サイト:
scipy.stats.mannwhitneyu — SciPy v0.19.1 Reference Guide
- 補足:
多群比較するときは一元配置分散分析を使おう。
AとBで検定、BとCで検定、AとCで検定のようなことはしないように。
関連: