如何在 python 中执行三向方差分析
三向方差分析用于确定分布在三个因素中的三个或更多独立组的平均值之间是否存在统计显着差异。
以下示例显示如何在 Python 中执行三向方差分析。
示例:Python 中的三向方差分析
假设研究人员想要确定两种训练计划是否会导致大学篮球运动员的跳跃高度平均提高不同。
研究人员怀疑性别和分区(分区 I 或分区 II)也可能影响跳跃高度,这就是他也收集这些因素数据的原因。
他的目标是进行三向方差分析,以确定训练计划、性别和划分如何影响跳跃高度。
使用以下步骤在 Python 中执行此三向方差分析:
第 1 步:创建数据
首先,让我们创建一个 pandas 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 值以及因子之间的交互作用。
从结果中我们可以看出,三个因素之间的交互作用均不具有统计显着性。
我们还可以看到,三个因素(项目、性别和部门)均具有统计显着性,p 值如下:
- 计划P 值:0.00000000298
- 性别P 值:0.00000000000171
- 部门P 值:0.00000185
总之,我们可以说,训练计划、性别和级别都是提高运动员弹跳高度的重要指标。
我们还可以说,这三个因素之间不存在显着的交互作用。
其他资源
以下教程解释了如何在 Python 中拟合其他 ANOVA 模型:
如何在 Python 中执行单向方差分析
如何在 Python 中执行双向方差分析
如何在 Python 中执行重复测量方差分析