前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单因素方差分析及其相关检验

单因素方差分析及其相关检验

作者头像
用户3577892
发布于 2021-01-02 14:44:31
发布于 2021-01-02 14:44:31
1.6K00
代码可运行
举报
文章被收录于专栏:数据科学CLUB数据科学CLUB
运行总次数:0
代码可运行

ANOVA

单因子方差分析

(1)问题与数据 设某因子有r个水平,记为,在每一水平下各做m次独立重复试 验,若记第i个水平下第j次重复的试验结果为,所有试验的结果可列表如下:

对这个试验要研究的问题是 个水平 间有无显著差异.

(2) 基本假定

A1 : 第 个水平下的数据 是来自正态总体 的一个样 本

个方差相同 即 ;

A3 : 诸数据 都相互独立. 在这三个基本假定下,要检验的假设是

方差分析就是在方差相等的条件下,对若干个正态均值是否相等的假设检验.

(3)平方和分解式

若记 上述诸平方和分别为

称为总平方和,其自由度 ;

称为组间平方和或因子 的平方和,其自由度

称为组内平方和或误差平方和, 其自 由度 注 : 数据 的平移 不会改变其平方和的值. 用此性质可简化计算.

(4) 方差分析表

(5) 判断 在 成立下, ,对给定的显著性水平 , 其拒绝域为

若 则认为因子 显著,即诸正态均值间有显著差异

  1. 数据结构式及其参数估计 (1)数据结构式

其中 为总均值, 为第 个水平的效应, 且 为试验误差,所有 可 作为来自 的一个样本,在上述数据结构式下 要检 验的假设检验可改写为

不全为

(2) 点估计

总均值 的估计 ;

水平均值 的估计

主效应 的估计

误差方差 的估计 .

(3) 置信区间

的 置信区间为

首先生成一些虚假的选民年龄和人口统计数据,接着使用方差分析比较各组的平均年龄:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import scipy.stats as stats
import pandas as pd
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.random.seed(12)

races =   ["asian","black","hispanic","other","white"]

# 生成随机数据
voter_race = np.random.choice(a= races,
                              p = [0.05, 0.15 ,0.25, 0.05, 0.5],
                              size=1000)

voter_age = stats.poisson.rvs(loc=18,
                              mu=30,
                              size=1000)

# 将年龄数据按种族分类
voter_frame = pd.DataFrame({"race":voter_race,"age":voter_age})
groups = voter_frame.groupby("race").groups
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
voter_frame
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groups
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'asian': Int64Index([  4,   7,  14,  21,  49,  53,  59,  78,  95,  98, 135, 136, 162,
             203, 227, 264, 278, 289, 326, 335, 345, 373, 430, 480, 484, 491,
             516, 587, 602, 684, 692, 708, 715, 761, 776, 826, 828, 832, 853,
             897, 942, 951, 986, 996],
            dtype='int64'),
 'black': Int64Index([  0,   9,  19,  22,  23,  42,  50,  56,  62,  76,
             ...
             948, 956, 961, 965, 968, 972, 982, 984, 989, 990],
            dtype='int64', length=147),
 'hispanic': Int64Index([  2,  10,  24,  28,  31,  32,  38,  40,  44,  45,
             ...
             954, 955, 958, 959, 962, 964, 966, 974, 994, 999],
            dtype='int64', length=244),
 'other': Int64Index([ 17,  26,  39,  46,  48,  65,  67,  72, 146, 237, 246, 255, 284,
             302, 317, 322, 358, 370, 386, 413, 425, 446, 530, 542, 569, 571,
             573, 575, 583, 626, 629, 637, 662, 696, 700, 701, 728, 739, 756,
             757, 773, 813, 819, 880, 923, 936, 939, 971, 980, 992],
            dtype='int64'),
 'white': Int64Index([  1,   3,   5,   6,   8,  11,  12,  13,  15,  16,
             ...
             981, 983, 985, 987, 988, 991, 993, 995, 997, 998],
            dtype='int64', length=515)}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 提取不同种族的年龄信息,进行方差分析
asian = voter_age[groups["asian"]]
black = voter_age[groups["black"]]
hispanic = voter_age[groups["hispanic"]]
other = voter_age[groups["other"]]
white = voter_age[groups["white"]]

stats.f_oneway(asian, black, hispanic, other, white)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F_onewayResult(statistic=1.7744689357329695, pvalue=0.13173183201930463)

检验结果的F统计量为1.774,p值为0.1317,表明各组的平均值之间没有显著差异。

方差分析的另一种方法是使用statsmodels库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import statsmodels.api as sm
from statsmodels.formula.api import ols

model = ols('age ~ race',                
            data = voter_frame).fit()
                
anova_result = sm.stats.anova_lm(model, typ=2)
print (anova_result)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
             sum_sq     df         F    PR(>F)
race        199.369    4.0  1.774469  0.131732
Residual  27948.102  995.0       NaN       NaN

可以看出,statsmodels方法生成的F统计量和P值与stats.Fèoneway方法完全相同。

现在重新进行一次方差检验,修改下年龄数据,使每组的平均值确实不同:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.random.seed(12)


voter_race = np.random.choice(a= races,
                              p = [0.05, 0.15 ,0.25, 0.05, 0.5],
                              size=1000)

# 给白种人的年龄设置一个不同的location
white_ages = stats.poisson.rvs(loc=18, 
                              mu=32,
                              size=1000)

voter_age = stats.poisson.rvs(loc=18,
                              mu=30,
                              size=1000)

voter_age = np.where(voter_race=="white", white_ages, voter_age)

voter_frame = pd.DataFrame({"race":voter_race,"age":voter_age})
groups = voter_frame.groupby("race").groups   

asian = voter_age[groups["asian"]]
black = voter_age[groups["black"]]
hispanic = voter_age[groups["hispanic"]]
other = voter_age[groups["other"]]
white = voter_age[groups["white"]]

stats.f_oneway(asian, black, hispanic, other, white)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F_onewayResult(statistic=10.164699828386366, pvalue=4.5613242113994585e-08)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model = ols('age ~ race',                 # Model formula
            data = voter_frame).fit()
                
anova_result = sm.stats.anova_lm(model, typ=2)
print (anova_result)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                sum_sq     df        F        PR(>F)
race       1284.123213    4.0  10.1647  4.561324e-08
Residual  31424.995787  995.0      NaN           NaN

测试结果表明,在这种情况下,两组的样本均值并不相同,因为p值在99%的置信水平下是显著的。

多重比较

  1. 在单因子方差分析中,当因子 显著时,就要继续研究如下问题 : 在多个水平均值中同时比较任意两个水平间有无明显差异的问题,这个问题的 检验法则称多重比较. 若因子 有 个水平,则同时检验 个假设

其拒绝域对给定的显著性水平诸临界值由决定

  1. Turkey 法 在各水平试验次数相同时,其诸临界值 也相 同,具体为

其中 是分布 的 分位数.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from statsmodels.stats.multicomp import pairwise_tukeyhsd

tukey = pairwise_tukeyhsd(endog=voter_age,    
                          groups=voter_race,   
                          alpha=0.05)          

tukey.plot_simultaneous()    # 画出每组的置信区间
plt.vlines(x=49.57,ymin=-0.5,ymax=4.5, color="red")

tukey.summary()              

Tukey检验的结果显示了平均差异、置信区间以及在给定显著性水平下是否应该拒绝原假设。在这种情况下,测试结果显示拒绝了3对原假设,每一对均包括“白色”类别。这表明白人群体可能与其他人不同。95%置信区间图显示了只有一个组的置信区间和白色组置信区间有重叠。

方差齐次性检验

  1. 问题 方差齐性即诸方差相等,是方差分析的基本假定之一,方差齐性检验就是检验这个假定是否成立. 该检验问题的一对假设为 vs 诸 不全相等.
  2. Hartley 检验,检验统计量是

其中 是第 个水平 下重复试验数据的样本方差. 拒绝域为

其中 为显著性水平 是统计量 的分布的 分位数

  1. Levene检验是Bartlett检验的替代方法。与正常情况相比,Levene检验不如Bartlett检验敏感。如果有确凿的证据表明数据确实来自正态分布或接近正态分布,那么Bartlett的检验将具有更好的性能。检验统计量是其中: 为第 个样本的含量, 为各样本含量之 和, 为将原 始数据经数据转换后的新的变量值。 为第 个样 本的均数, 。为全部数据的总的均数。拒绝域为
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Bartlett 检验
# scipy官网上的一个例子
from scipy.stats import bartlett
a = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
b = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
c = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
stat, p = bartlett(a, b, c)
p
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.1254782518834628e-05

P值很小,意味着要拒绝原假设,a,b,c的方差不是齐次的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 求a,b,c各自的方差
[np.var(x, ddof=1) for x in [a,b,c]]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[0.007054444444444413, 0.13073888888888888, 0.008890000000000002]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stat, p = bartlett(asian, black, hispanic, other, white)
p
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.16370899141700943
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[np.var(x, ddof=1) for x in [asian, black, hispanic, other, white]]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[24.25951374207189,
 33.06383375267915,
 37.216268636578285,
 30.612653061224485,
 29.20417060179064]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Levene检验
from scipy.stats import levene
a = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
b = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
c = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
stat, p = levene(a, b, c)
p
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.002431505967249681
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stat, p = levene(asian, black, hispanic, other, white)
p
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.4355288565481745
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学CLUB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
方差分析(Anova)「建议收藏」
单因素方差分析:只有一个因素A对实验指标有影响,假设因素A有r个水平,分别在第i个水平下进行多次独立的观察,所得到的实验指标数据如下:
全栈程序员站长
2022/09/16
3.1K0
常用数据分析方法:方差分析及实现!
一个复杂的事物,其中往往有许多因素互相制约又互相依存。方差分析是一种常用的数据分析方法,其目的是通过数据分析找出对该事物有显著影响的因素、各因素之间的交互作用及显著影响因素的最佳水平等。
Datawhale
2020/07/09
3.5K0
常用数据分析方法:方差分析及实现!
SPSS实战:单因素方差分析(ANOVA)
方差分析是一种假设检验,它把观测总变异的平方和与自由度分解为对应不同变异来源的平方和与自由度,将某种控制性因素所导致的系统性误差和其他随机性误差进行对比,从而推断各组样本之间是否存在显著性差异,以分析该因素是否对总体存在显著性影响。方差分析法采用离差平方和对变差进行度量,从总离差平方和分解出可追溯到指定来源的部分离差平方和。方差分析要求样本满足以下条件:
全栈程序员站长
2022/09/18
16.7K1
SPSS实战:单因素方差分析(ANOVA)
方差分析法
工程实现的过程中需要对提取的特征指标进行有效性分析,评价各个特征指标与分类器不同类别的显著性关系,筛选出对不同类别判别贡献率最佳的指标,为设计分类器等提供支持。
全栈程序员站长
2022/11/03
9450
方差分析法
数据科学基础(九) 回归分析和方差分析
📚 文档目录 随机事件及其概率 随机变量及其分布 期望和方差 大数定律与中心极限定理 数理统计的基本概念 参数估计 假设检验 多维 回归分析和方差分析 降维 9.1 回归分析 9.1.1 相关性分析 皮尔逊 (Pearson) 相关系数. \bar X,\bar Y 为样本均值, s_x,s_y 是样本方差. Pearson 相关系数用于度量两个随机变量 X,Y 的线性关系. 可近似估计 \rho . 取值范围: [-1,1] , 绝对值越接近 1 , 则线性关系越强. 对称性. 原
Rikka
2022/01/19
1.5K0
数据科学基础(九) 回归分析和方差分析
方差分析简介(结合COVID-19案例)
我们正在应对一场空前规模的流行病。全世界的研究人员都在疯狂地试图开发一种疫苗或COVID-19的治疗方法,而医生们正试图阻止这种流行病席卷整个世界。
磐创AI
2020/08/11
2.1K0
方差分析简介(结合COVID-19案例)
统计学 方差分析_python编写计算方差的函数
从以上资料可以看出,24个患者与健康人的血磷值各不相同,如果用离均差平方和(SS)描述其围绕总均值的变异情况,则总变异有以下两个来源:
全栈程序员站长
2022/09/27
1.1K0
基于matlab的方差分析_方差分析结果怎么看
更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=100
全栈程序员站长
2022/11/04
1.4K0
基于matlab的方差分析_方差分析结果怎么看
《spss统计分析与行业应用案例详解》实例33单因素方差分析 34多因素方差分析
总离差平方和3318.482,组间离差平方和1379.722,组内离差平方和1938.76,组间离差平方和中可以被线性解释的部分为557.904,方差检验F=3.795,对应的显著性为0.031,小于显著性水平0.05,因此认为四组中至少有一组与两外一组存在显著性差异。
统计学家
2019/04/10
2.9K0
《spss统计分析与行业应用案例详解》实例33单因素方差分析  34多因素方差分析
R语言数据分析与挖掘(第五章):方差分析(1)——单因素方差分析
方差分析(analysis of variation,简写为ANOVA)又称变异数分析或F检验,用于两个及两个以上样本均值差别的显著性检验,从函数的形式看,方差分析和回归都是广义线性模型的特例,回归分析lm()也能作方差分析。其目的是推断两组或多组数据的总体均值是否相同,检验两个或多个样本均值的差异是否有统计学意义。方差分析的基本思路为:将试验数据的总变异分解为来源于不同因素的相应变异,并作出数量估计,从而明确各个变异因素在总变异中所占的重要程度;也就是将试验数据的总变异方差分解成各变因方差,并以其中的误差方差作为和其他变因方差比较的标准,以推断其它变因所引起的变异量是否真实的一种统计分析方法。把对试验结果发生影响和起作用的自变量称为因素(factor),即我们所要检验的对象。如果方差分析研究的是一个因素对于试验结果的影响和作用,就称为单因素方差分析。因素的不同选择方案称之为因素的水平(level of factor)或处理(treatment)。因素的水平实际上就是因素的取值或者是因素的分组。样本数据之间差异如果是由于抽样的随机性造成的,称之为随机误差;如果是由于因素水平本身不同引起的差异,称之为系统误差。
DoubleHelix
2019/12/13
5.5K0
R语言数据分析与挖掘(第五章):方差分析(1)——单因素方差分析
方差分析与R实现
方差分析泛应用于商业、经济、医学、农业等诸多领域的数量分析研究中。例如商业广告宣传方面,广告效果可能会受广告式、地区规模、播放时段、播放频率等多个因素的影响,通过方差分析研究众多因素中,哪些是主要的以及如何产生影响等。而在经济管理中,方差分析常用于分析变量之间的关系,如人民币汇率对股票收益率的影响、存贷款利率对债券市场的影响,等等。 协方差是在方差分析的基础上,综合回归分析的方法,研究如何调节协变量对因变量的影响效应,从而更加有效地分析实验处理效应的一种统计技术。 单因素方差分析及R实现 (1)正态性检验
机器学习AI算法工程
2018/03/12
1.9K0
方差分析与R实现
卡方检验及其Python实现
检验主要是测试样本分类数据的分布是否符合预期分布。相信大家如果学过高中生物,都知道孟德尔——遗传学之父,当时他根据颜色和形状把豌豆分为四类:黄圆、绿圆、黄皱和绿皱.孟德尔根据遗传学原理判断这四类的比例应为9:3:3:1.为做验证,孟德尔分别统计了这四类豌豆的个数,正是利用
用户3577892
2020/12/01
3.3K0
python单因素方差分析实例
做方差分析的时候数据需要满足正态分布;方差齐性等。正常拿到数据后需要对数据是否符合正态分布和组间方差是否一致做检验。如何来做以上两个检验今天先忽略掉,在默认拿到的数据符合条件后直接在做单因素方差分析。
用户7010445
2020/03/03
3K0
手把手教你R语言方差分析ANOVA
方差分析(ANOVA)是一种统计方法,用于比较两组或多组数据之间的均值差异。在R语言中,实现方差分析主要涉及到以下步骤:
生信学习者
2024/06/12
7560
手把手教你R语言方差分析ANOVA
R语言_方差分析
在回归分析中,通过量化的预测变量来预测量化的响应变量,建立了相应的回归模型。 同时,预测变量也不一定是量化的,还可以是名义型或者有序型变量。这种情况下,关注的重点通常在组间的差异性分析,称为方差分析(ANOVA)。
用户1147754
2019/05/26
1.5K0
方差分析
假如你们现在针对用户提出了三种提高客单价的策略A、B、C,现在想看一下这三种策略最后对提高客单价的效果有什么不同,那我们怎么才能知道这三种策略效果有什么不同?最简单的方法就是做一个实验,我们可以随机挑选一部分用户,然后把这些用户分成三组A、B、C组,A组用户使用A策略、B组用户使用B策略、C组用户使用C策略,等策略实施一段时间以后,我们来看一下这三组分别的客单价是什么水平?哪组平均客单价高,就说明哪组策略有效果。真的可以得出这的结论吗?是可以,但是不够严谨。
张俊红
2019/08/15
9990
经典方差分析:手把手教你读懂、会用1
当解释变量包含名义型和有序型的因子时,我们关注的重点往往在于组间的差异分析。这是非常必要的,尤其是考虑到科学研究中样品分组是普遍存在的,而样品组或者聚类分析获得的聚类簇都不能转化为连续的数值,均需要作为引子进行分析。这种组间的比较分析我们可以称之为方差分析(analysisof variance,ANOVA)。方差分析通过F检验来进行效果评测,与t检验一样,是一种参数检验方法,需要用到总体分布的参数特征(均值、方差),因此是针对符合正态分布总体的样本数据进行分析。
SYSU星空
2022/05/05
3.9K0
经典方差分析:手把手教你读懂、会用1
R语言方差分析总结
这篇文章涵盖了孙振球,徐勇勇《医学统计学》第4版中关于方差分析的章节,包括:多样本均数比较的方差分析/多因素实验资料的方差分析/重复测量设计资料的方差分析/协方差分析。
医学和生信笔记
2022/11/15
2.7K0
R语言方差分析总结
【数据分析 R语言实战】学习笔记 第八章 单因素方差分析与R实现
方差分析泛应用于商业、经济、医学、农业等诸多领域的数量分析研究中。例如商业广告宣传方面,广告效果可能会受广告式、地区规模、播放时段、播放频率等多个因素的影响,通过方差分析研究众多因素中,哪些是主要的以及如何产生影响等。而在经济管理中,方差分析常用于分析变量之间的关系,如人民币汇率对股票收益率的影响、存贷款利率对债券市场的影响,等等。
统计学家
2019/04/10
2.5K0
【数据分析 R语言实战】学习笔记 第八章  单因素方差分析与R实现
spss中进行单因素方差分析的操作步骤是_双因素方差分析交互作用判断
方差分析是检验多个总体均值是否相等的统计方法,本质上研究的是分类型自变量对数值型因变量的影响。
全栈程序员站长
2022/09/20
1.6K0
spss中进行单因素方差分析的操作步骤是_双因素方差分析交互作用判断
推荐阅读
相关推荐
方差分析(Anova)「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档