单因素Anova分析 Python实现

单因素方差分析常用于判断在多个分组中某个指标是否具有显著差异,下面以射击比赛为例,三位选手分别成绩如下:

Pat - 5, 4, 4, 3, 9, 4
Jack - 4, 8, 7, 5, 1, 5
Alex - 9, 9, 8, 10, 4, 10

基于上述数据,我们希望判断上述三个选手中成绩最好的。原假设:三个选手的成绩无显著差异。
在这里插入图片描述
拒绝原假设的就表示在三个选手中至少有两个人是具有显著差异的。

import numpy as np
from scipy import stats
 
data = np.rec.array([
('Pat', 5),
('Pat', 4),
('Pat', 4),
('Pat', 3),
('Pat', 9),
('Pat', 4),
('Jack', 4),
('Jack', 8),
('Jack', 7),
('Jack', 5),
('Jack', 1),
('Jack', 5),
('Alex', 9),
('Alex', 8),
('Alex', 8),
('Alex', 10),
('Alex', 5),
('Alex', 10)], dtype = [('Archer','|U5'),('Score', '<i8')])
 
f, p = stats.f_oneway(data[data['Archer'] == 'Pat'].Score,
                      data[data['Archer'] == 'Jack'].Score,
                      data[data['Archer'] == 'Alex'].Score)
 
print ('One-way ANOVA')
print ('=============')
 
print ('F value:', f)
print ('P value:', p, '\n')

得到的结果如下:
在这里插入图片描述
由于P值0.02 < 0.05;所以我们拒绝原假设,认为三个选择间至少有两个具有显著性的差异。虽然知道了三者间具有显著差异,但是我们还是希望能够判断出哪个选手是三人中成绩最好的,接下来采用Tukey’s range test进行分析。

from statsmodels.stats.multicomp import pairwise_tukeyhsd
from statsmodels.stats.multicomp import MultiComparison

并在第一部分的代码后添加如下代码

mc = MultiComparison(data['Score'], data['Archer'])
result = mc.tukeyhsd()
 
print(result)

结果如下图
在这里插入图片描述
在上图中,可以看出(Alex&Jack) 和(Alex&Pat)拒绝原假设,
在这里插入图片描述
通过均值的差值可以得出结论Alex是三个选择中成绩最好的。

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值