Python で三元配置分散分析を実行する方法
三元配置分散分析は、 3 つの因子に分散された 3 つ以上の独立したグループの平均間に統計的に有意な差があるかどうかを判断するために使用されます。
次の例は、Python で 3 元配置分散分析を実行する方法を示しています。
例: Python での 3 元配置分散分析
研究者が、2 つのトレーニング プログラムが大学のバスケットボール選手の間でジャンプの高さの平均高さの異なる向上につながるかどうかを判断したいとします。
研究者は、性別と部門 (部門 I または II) もジャンプの高さに影響を与えるのではないかと考えており、これらの要因に関するデータも収集しています。
彼の目標は、三元配置分散分析を実行して、トレーニング プログラム、性別、部門がジャンプの高さにどのような影響を与えるかを判断することです。
Python でこの 3 元配置分散分析を実行するには、次の手順を使用します。
ステップ 1: データを作成する
まず、データを保持するパンダ DataFrame を作成しましょう。
import numpy as np
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' program ': np.repeat ([1,2],20),
' gender ': np. tile (np. repeat (['M', 'F'], 10), 2),
' division ': np. tile (np. repeat ([1, 2], 5), 4),
' height ': [7, 7, 8, 8, 7, 6, 6, 5, 6, 5,
5, 5, 4, 5, 4, 3, 3, 4, 3, 3,
6, 6, 5, 4, 5, 4, 5, 4, 4, 3,
2, 2, 1, 4, 4, 2, 1, 1, 2, 1]})
#view first ten rows of DataFrame
df[:10]
program gender division height
0 1 M 1 7
1 1 M 1 7
2 1 M 1 8
3 1 M 1 8
4 1 M 1 7
5 1 M 2 6
6 1 M 2 6
7 1 M 2 5
8 1 M 2 6
9 1 M 2 5
ステップ 2: 三元配置分散分析を実行する
次に、 statsmodelsライブラリのanova_lm()関数を使用して、三元分散分析を実行できます。
import statsmodels. api as sm
from statsmodels. formula . api import ols
#perform three-way ANOVA
model = ols("""height ~ C(program) + C(gender) + C(division) +
C(program):C(gender) + C(program):C(division) + C(gender):C(division) +
C(program):C(gender):C(division)""", data=df) .fit ()
sm. stats . anova_lm (model, typ= 2 )
sum_sq df F PR(>F)
C(program) 3.610000e+01 1.0 6.563636e+01 2.983934e-09
C(gender) 6.760000e+01 1.0 1.229091e+02 1.714432e-12
C(division) 1.960000e+01 1.0 3.563636e+01 1.185218e-06
C(program):C(gender) 2.621672e-30 1.0 4.766677e-30 1.000000e+00
C(program):C(division) 4.000000e-01 1.0 7.272727e-01 4.001069e-01
C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
C(program):C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
Residual 1.760000e+01 32.0 NaN NaN
ステップ 3: 結果を解釈する
Pr(>F)列には、個々の因子の p 値と因子間の交互作用が表示されます。
結果から、3 つの因子間の相互作用はどれも統計的に有意ではなかったことがわかります。
また、3 つの要素 (プログラム、性別、部門) のそれぞれが、次の p 値で統計的に有意であることもわかります。
- プログラムP 値: 0.00000000298
- 性別P 値: 0.00000000000171
- 分割P 値: 0.00000185
結論として、トレーニング プログラム、性別、部門はすべて、選手のジャンプ高さの向上を示す重要な指標であると言えます。
また、これら 3 つの要素の間には有意な相互作用効果はないと言えます。
追加リソース
次のチュートリアルでは、Python で他の ANOVA モデルを近似する方法について説明します。
Python で一元配置分散分析を実行する方法
Python で二元配置分散分析を実行する方法
Python で反復測定 ANOVA を実行する方法