Python 多因素方差分析

在实际应用中,一个实验的指标往往受到多个因素的影响。

例如饮料的销量有可能受到销售地区或者饮料颜色的影响。在方差分析中,若把饮料的颜色看做影响销量的因素A,把销售地区看做影响因素B。同时对因素A和因素B进行分析,就称为双因素方差分析。

a	b	c
a1	b1	20
a1	b2	22
a1	b3	24
a1	b4	16
a1	b5	26
a2	b1	12
a2	b2	10
a2	b3	14
a2	b4	4
a2	b5	22
a3	b1	20
a3	b2	20
a3	b3	18
a3	b4	8
a3	b5	16
a4	b1	10
a4	b2	12
a4	b3	18
a4	b4	6
a4	b5	20
a5	b1	14
a5	b2	6
a5	b3	10
a5	b4	18
a5	b5	10

from 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,说明这两种颜色有显著性差异

猜你喜欢

转载自blog.csdn.net/qq_38214903/article/details/82938612