Python で tukey テストを実行する方法
一元配置分散分析は、 3 つ以上の独立したグループの平均間に統計的に有意な差があるかどうかを判断するために使用されます。
ANOVA 表全体のp 値が一定の有意性レベルを下回っている場合、グループ平均の少なくとも 1 つが他の平均とは異なると言える十分な証拠があります。
ただし、これではどのグループが互いに異なるかはわかりません。これは単に、すべてのグループの平均が等しいわけではないことを示しています。どのグループが互いに異なっているかを正確に知るには、 事後テストを実行する必要があります。
最も一般的に使用される事後テストの 1 つはTukey テストです。これを使用すると、 家族ごとの誤り率を制御しながら、各グループの平均値間のペアごとの比較を実行できます。
このチュートリアルでは、Python で Tukey テストを実行する方法の段階的な例を示します。
ステップ 1: 必要なパッケージと関数をロードする
まず、必要なパッケージと関数を Python にロードします。
import pandas as pd
import numpy as np
from scipy. stats import f_oneway
from statsmodels. stats . multicomp import pairwise_tukeyhsd
ステップ 2: ANOVA モデルを当てはめる
次のコードは、3 つのグループ (A、B、および C) を含む偽のデータ セットを作成し、一元配置分散分析モデルをデータに適合させて、各グループの平均値が等しいかどうかを判断する方法を示しています。
#enter data for three groups a = [85, 86, 88, 75, 78, 94, 98, 79, 71, 80] b = [91, 92, 93, 90, 97, 94, 82, 88, 95, 96] c = [79, 78, 88, 94, 92, 85, 83, 85, 82, 81] #perform one-way ANOVA f_oneway(a, b, c) F_onewayResult(statistic=5.167774552944481, pvalue=0.012582197136592609)
ANOVA テーブルからの全体の p 値は0.01258であることがわかります。
この数値は 0.05 未満であるため、各グループの平均値が等しくないと言える十分な証拠があります。
したがって、Tukey 検定を実行して、どのグループの平均値が異なるかを正確に判断できます。
ステップ 3: Tukey テストを実行する
Python で Tukey テストを実行するには、 statsmodelsライブラリのペアワイズ_tukeyhsd()関数を使用できます。
#create DataFrame to hold data df = pd. DataFrame ({'score': [85, 86, 88, 75, 78, 94, 98, 79, 71, 80, 91, 92, 93, 90, 97, 94, 82, 88, 95, 96, 79, 78, 88, 94, 92, 85, 83, 85, 82, 81], 'group': np. repeat (['a', 'b', 'c'], repeats= 10 )}) # perform Tukey's test tukey = pairwise_tukeyhsd(endog=df['score'], groups=df['group'], alpha= 0.05 ) #display results print (tukey) Multiple Comparison of Means - Tukey HSD, FWER=0.05 ==================================================== === group1 group2 meandiff p-adj lower upper reject -------------------------------------------------- --- ab 8.4 0.0158 1.4272 15.3728 True ac 1.3 0.8864 -5.6728 8.2728 False bc -7.1 0.0453 -14.0728 -0.1272 True -------------------------------------------------- ---
結果を解釈する方法は次のとおりです。
- a と b の平均の差の P 値: 0.0158
- a と c の平均の差の P 値: 0.8864
- b と c の平均の差の P 値: 0.0453
したがって、グループaとb 、およびグループbとcの平均の間には 統計的に有意な差があるが、グループaとcの平均の間には統計的に有意な差はないと結論付けることができます。
追加リソース
Python で一元配置分散分析を実行する方法
Python で二元配置分散分析を実行する方法
Python で反復測定 ANOVA を実行する方法