如何在 python 中执行双向方差分析
双向方差分析用于确定已分成两个因素的三个或更多独立组的平均值之间是否存在统计显着差异。
双向方差分析的目的是确定两个因素对响应变量的影响,并确定这两个因素对响应变量是否存在交互作用。
本教程介绍如何在 Python 中执行双向方差分析。
示例:Python 中的双向方差分析
植物学家想知道植物生长是否受到阳光照射和浇水频率的影响。她种下了 30 颗种子,让它们在不同的阳光照射和浇水频率条件下生长两个月。两个月后,她记录了每株植物的高度(以英寸为单位)。
使用以下步骤进行双向方差分析,以确定浇水频率和阳光照射是否对植物生长有显着影响,并确定浇水频率和阳光照射之间是否存在交互作用。浇水和暴露在阳光下。
第 1 步:输入数据。
首先,我们将创建一个 pandas DataFrame,其中包含以下三个变量:
- 水:每株植物浇水的频率:每天或每周
- 阳光:每株植物接受的阳光照射量:低、中或高
- height:两个月后每株植物的高度(英寸)
import numpy as np import pandas as pd #create data df = pd.DataFrame({'water': np.repeat(['daily', 'weekly'], 15), 'sun': np.tile(np.repeat(['low', 'med', 'high'], 5), 2), 'height': [6, 6, 6, 5, 6, 5, 5, 6, 4, 5, 6, 6, 7, 8, 7, 3, 4, 4, 4, 5, 4, 4, 4, 4, 4, 5, 6, 6, 7, 8]}) #view first ten rows of data df[:10] water sun height 0 daily low 6 1 daily low 6 2 daily low 6 3 daily low 5 4 daily low 6 5 daily med 5 6 daily med 5 7 daily med 6 8 daily med 4 9 daily med 5
步骤 2:执行双向方差分析。
接下来,我们将使用 statsmodels 库中的anova_lm() 函数执行双向方差分析:
import statsmodels.api as sm from statsmodels.formula.api import ols #perform two-way ANOVA model = ols('height ~ C(water) + C(sun) + C(water):C(sun)', data=df).fit() sm.stats.anova_lm(model, typ=2) sum_sq df F PR(>F) C(water) 8.533333 1.0 16.0000 0.000527 C(sun) 24.866667 2.0 23.3125 0.000002 C(water):C(sun) 2.466667 2.0 2.3125 0.120667 Residual 12.800000 24.0 NaN NaN
第 3 步:解释结果。
我们可以看到表中每个因素的以下 p 值:
- 水: p 值 = 0.000527
- 太阳: p 值 = 0.0000002
- 水*阳光: p 值 = 0.120667
由于水和阳光的 p 值均小于 0.05,这意味着这两个因素对植物高度都有统计上显着的影响。
由于交互效应的 p 值 (0.120667) 不小于 0.05,这告诉我们,暴露在阳光下和浇水频率之间不存在显着的交互效应。
注意:虽然方差分析结果告诉我们,浇水频率和阳光照射对植物高度有统计学上的显着影响,但我们需要进行事后测试,以确定不同水平的水和阳光如何影响植物高度。
其他资源
以下教程解释了如何在 Python 中执行其他常见任务: