Python での welch の anova (ステップバイステップ)


ウェルチの分散分析は、分散の等価性の仮定が満たされない場合の典型的な一元配置分散分析の代替手段です。

次のステップバイステップの例は、Python で Welch の ANOVA を実行する方法を示しています。

ステップ 1: データを作成する

3 つの異なる学習手法が異なる試験結果につながるかどうかを判断するために、教授は 10 人の学生をランダムに割り当てて、1 週間各手法 (手法 A、B、または C) を使用させ、各学生に同じ難易度のテストを課します。

30 名の学生の試験結果は次のとおりです。

 A = [64, 66, 68, 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]

ステップ 2: 等差検定

次に、 バートレット検定を実行して、各グループ間の分散が等しいかどうかを判断できます。

検定統計量のp 値が特定の有意水準 (α = 0.05 など) を下回っている場合、帰無仮説を棄却し、すべてのグループの分散が同じではないと結論付けることができます。

次のコードを使用して、Python で Bartlett テストを実行できます。

 import scipy. stats as stats

#perform Bartlett's test 
stats. bartlett (A, B, C)

BartlettResult(statistic=9.039674395, pvalue=0.010890796567)

Bartlett 検定の p 値 ( .01089 ) は α = .05 未満です。これは、各グループの分散が同じであるという帰無仮説を棄却できることを意味します。

したがって、分散の等価性の仮定が破られ、Welch の ANOVA を続行できます。

ステップ 3: ウェルチの ANOVA を実行する

Python でウェルチの ANOVA を実行するには、Penguin パッケージのwelch_anova()関数を使用できます。

まず、ペンギンをインストールする必要があります。

 pip install Penguin

次に、次のコードを使用して、Welch の ANOVA を実行できます。

 import penguin as pg
import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' score ': [64, 66, 68, 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 Welch's ANOVA
pg. welch_anova (dv=' score ', between=' group ', data=df)

        Source ddof1 ddof2 F p-unc np2
0 group 2 16.651295 9.717185 0.001598 0.399286

ANOVA 表全体の p 値 ( 0.001598 ) は α = 0.05 未満です。これは、試験結果が 3 つの研究手法間で等しいという帰無仮説を棄却できることを意味します。

次に、Games-Howell 事後検定を実行して、どのグループの平均が異なるかを正確に判断できます。

 pg. pairwise_gameshowell (dv=' score ', between=' group ', data=df)


        A B mean(A) mean(B) diff se T df pval	
0 a b 77.3 91.8 -14.5 3.843754 -3.772354 11.6767 0.0072
1 a c 77.3 84.7 -7.4 3.952777 -1.872102 12.7528 0.1864
2 b c 91.8 84.7 7.1 2.179959 3.256942 17.4419 0.0119

p 値から、グループaとグループbの間の平均差は有意に異なり、グループbとグループcの間の平均差は有意に異なることがわかります。

追加リソース

Python で一元配置分散分析を実行する方法
Python で二元配置分散分析を実行する方法
Python で反復測定 ANOVA を実行する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です