欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

方差分析之单因素方差分析

程序员文章站 2022-04-18 12:47:15
...

方差分析之单因素方差分析

     作者:DD

     来源:数据科学家联盟

方差分析是一种能使多因素(多组间)检验变得简洁的一种检验方式,它能同时考虑所有的样本,不仅能使检验过程变得简洁还能排除因两两检验可能造成的错误累积的概率。本文要说的是方差分析中最简单的部分:单因素方差分析

0x01 从栗子看术语

学习方差分析,我们首先需要知道它所说的专业性术语,如:因素、水平、协方差、因变量,自变量等。单纯看定义可能会有点迷,下面我们通过一个栗子来看看这些术语具体是指什么:

以销售数据为例:现有某企业的销售数据,里面记录了5天内3个不同地区的销售额(单位:百万),数据如表1-1所示:


2019/2/1 2019/2/3 2019/3/1 2019/4/2 2019/5/2
A地区 110 62 121 82 62
B地区 120 160 221 130 161
C地区 172 104 182 213 98

如果我们想要检验不同地区的销售额是否存在显著性差异,此时地区就是我们要检验的对象,称为因素或者因子或者自变量;A地区、B地区、C地区是这一因素的具体表现,称为水平或者处理;在每个地区下所得到的样本数据(5天内的销售额)称为观测值,销售额称为因变量,由于我们的观测数相同,所以称为均衡设计;若观测数不同,则称为非均衡设计。因为我们只想研究不同地区的销售额,与时间没有关系,所以我们这里只有一个类别型变量,所做的分析称为单因素方差分析

如果我们想知道地区和时间对销售额造成的差异,那么将两个因素同时结合起来即可,此时称为双因素方差分析。不过,这时候会多出来另外两个术语:主效应和交互效应。所谓主效应,顾名思义就是研究多个因素对同一个因变量的影响时每一个因素所造成的效应;而交互效应就是多个因素间的交互作用对因变量所造成的影响。这里的主效应就是地区和时间对销售额的影响,交互效应就是地区和时间的交互作用对销售额的影响。当设计中包含两个或者更多的因子时,便是因素方差分析, 比如两因子时称为双因素方差分析,三因子时称为三因素方差分析,以此类推。

拓展:在不同的地区中年龄可能是一个隐藏的因素,如A地区的用户主要为15-20岁的用户,C地区主要为28-30岁的用户等,因此年龄也可以解释为因变量间的组间差异(或混淆因素),如果我们对年龄不感兴趣,那么它就是干扰变数,如果我们提前知道年龄分布,那么我们可以在评估地区对销售额的影响前,对任何年龄段的组间差异进行调整,此时年龄称为协变量,该设计称为协方差分析。此外,当因变量不止一个时,设计称为多元方差分析,若协变量也存在,则称为多元协方差分析。

0x02 方差分析流程

了解完了术语,我们来看看方差分析的基本假定:

  • 1、每个总体都应服从正态分布

  • 2、每个总体的方差s2必须相同

  • 3、观测值是独立的

什么意思?简单点就是说:对于不同地区的销售额是否存在显著性差异这个问题,我们每一个组的观测数必须来自方差相等的正态分布,且所有观测数之间相互独立。即 每个地区的销售额必须服从方差相等的正态分布且每一天的销售额都与其他天数的销售额相互独立。至此,对于方差分析我们已经有了一个基本的概念,下面我们走一遍方差分析流程:

1)、提出假设

通过检验因素的k个水平均值是否相等,来判断自变量与因变量是否相关。

H0: μ1=μ2=...=μi=...μk (自变量对因变量没有显著影响)

H1: μ1,μ2,....μk不全相等。(自变量对因变量有显著影响)

2)、构造检验统计量

需要构造三个误差平方和,总平方和(SST)、组间平方和(SSA)和组内平方和(SSA)。且SST=SSA+SSE SST:全部观测值与总均值的误差平方和,计算公式为:

SSA:各组均值与总均值的误差平方和,反映各样本均值之间的差异程度。公式为:

SSE:每个水平或组的样本数据与其组均值的误差平方和。公式为:

3)、计算统计量 

各平方误差除以它们所对应的*度,称为均方误差。SST的*度为n-1,其中n为全部观测值个数;SSA的*度为k-1,k为因素水平的个数 SSE的*度为n-k。于是:

F = MSA/MSE服从F(k-1,n-k)分布。

4)、统计决策

在给定显著性水平α下,计算F(k-1,n-k)分布的Fα,如果F>Fα(或者p<α),则拒绝原假设,表明自变量对因变量影响显著,否则则接受原假设,认为自变量对因变量无显著性影响(即组间的查差异性不显著)

0x03 R语言实现过程

# 1、录入数据,计算均值进行简单比较
y=c(110,62,121,82,62,120,160,221,130,161,172,104,182,213,98)
x=gl(3,5) 
z=data.frame(y,x)
mean(y) 
c(mean(y[x==1]),mean(y[x==2]),mean(y[x==3]))-mean(y)

方差分析之单因素方差分析

由结果可以看到α1 = -45.8 ,α2 =25.2  ,α3 =20.6,µ = 133.2,所以从参数结果可以看到甲地区的销售额与另外两个地区可能存在差异。

# 2、进行方差齐性检验
bartlett.test(y,x)

方差分析之单因素方差分析

由结果中可知得到的p值=0.5201>0.05,所以接受原假设,认为方差齐性

# 3、进行方差分析
fit=aov(y~x,z); 
summary(fit)

方差分析之单因素方差分析

以上结果中p = 0.0281 <0.05,于是拒绝原假设,认为不同地区的销售额有显著性差异

# 4、画图看数据
plot(x,y,xaxt = "n",xlab = "地区", ylab = "销售额")
axis(1,c(1,2,3),labels=c("A","B","C"))

方差分析之单因素方差分析

# 5、多重比较
TukeyHSD(fit)

方差分析之单因素方差分析

从图中我们可以看到,在0.05的置信水平下,A地区与B地区的销售额有显著性差异,A地区与C地区、B地区与C地区之间并无显著性差异。

◆ ◆ ◆  ◆ 

方差分析之单因素方差分析

长按二维码关注我们


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

方差分析之单因素方差分析

猜你喜欢

 笑死人不偿命的知乎沙雕问题排行榜

 用Python扒出B站那些“惊为天人”的阿婆主!

 全球股市跳水大战,谁最坑爹!

 上万条数据撕开微博热搜的真相!

 你相信逛B站也能学编程