在实际应用中,一个实验的指标往往受到多个因素的影响。
例如饮料的销量有可能受到销售地区或者饮料颜色的影响。在方差分析中,若把饮料的颜色看做影响销量的因素A,把销售地区看做影响因素B。同时对因素A和因素B进行分析,就称为双因素方差分析。abc
a1b120
a1b222
a1b324
a1b416
a1b526
a2b112
a2b210
a2b314
a2b44
a2b522
a3b120
a3b220
a3b318
a3b48
a3b516
a4b110
a4b212
a4b318
a4b46
a4b520
a5b114
a5b26
a5b310
a5b418
a5b510from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
formula = 'c~ a + b '
anova_results = anova_lm(ols(formula,df).fit())
print(anova_results)df sum_sq mean_sq F PR(>F)
a 4.0 335.36 83.84 3.874307 0.021886
b 4.0 199.36 49.84 2.303142 0.103195
Residual 16.0 346.24 21.64 NaN NaN
检验的结论:
因素A的p值0.021886<0.05,拒绝原假设,说明饮料颜色对销量有显著影响;而因素B的p值0.103195>0.05,不能拒绝原假设,因此没有充分的理由说明销售地区对销量有显著影响。
然而,我们知道了颜色对销量有显著影响,那么是哪种颜色呢?
使用tukey方法对颜色进行多重比较from statsmodels.stats.multicomp import pairwise_tukeyhsd
print(pairwise_tukeyhsd(df['c'], df['a']))Multiple Comparison of Means - Tukey HSD,FWER=0.05
==============================================
group1 group2 meandiff lower upper reject
----------------------------------------------
1 2 -9.2 -19.0855 0.6855 False
1 3 -5.2 -15.0855 4.6855 False
1 4 -8.4 -18.2855 1.4855 False
1 5 -10.0 -19.8855 -0.1145 True
2 3 4.0 -5.8855 13.8855 False
2 4 0.8 -9.0855 10.6855 False
2 5 -0.8 -10.6855 9.0855 False
3 4 -3.2 -13.0855 6.6855 False
3 5 -4.8 -14.6855 5.0855 False
4 5 -1.6 -11.4855 8.2855 False
----------------------------------------------
结果说明:1和5的reject=True,说明这两种颜色有显著性差异