Python による Kruskal-Wallis test と ANOVA

scipy.stats.kruskal() コマンドで Kruskal-Wallis test を行う。また、scipy.stats.f_oneway() コマンドで one-way ANOVA (一元配置分散分析)を行う。

Python を起動し、pandas と scipy.stats を import する。

import pandas as pd
from scipy import stats

通常は Excel 等で作成した CSV ファイルを pandas に読み込んで分析する。しかし、ここでは便宜的に以下の簡単なデータフレームを作成し、data という変数に格納しておく。

data = pd.DataFrame({"デバイス":["デバイス A","デバイス B","デバイス A","デバイス A","デバイス C","デバイス C","デバイス B","デバイス C","デバイス A","デバイス A",], "出血量":[30,20,5,5,100,80,10,60,10,25]})

data の内容を確認する。

data

query() コマンドを使い、デバイスによって data を3群にグループ分けする。

A = data.query('デバイス == "デバイス A"')
B = data.query('デバイス == "デバイス B"')
C = data.query('デバイス == "デバイス C"')

それぞれのグループの平均や中央値等の基本統計量は describe() コマンドによって得られる。

A.describe()
B.describe()
C.describe()

A, B, C の出血量を Series 型に変換する。

x = A["出血量"]
y = B["出血量"]
z =  C["出血量"]

x, y, z に偏りがあるかどうかを scipy.stats.kruskal() コマンド、scipy.stats.f_oneway() コマンドで検定する。

stats.kruskal(x, y, z) #Kruskal-Wallis test
stats.f_oneway(x, y, z) #ANOVA