方差分析1—单因素方差分析(R语言)
方差分析是由英国著名统计学家:R.A.Fisher推导,也叫F检验,用于多个样本间均数的比较(分析类别变量、有序变量)。当包含的因子是解释变量时,关注的重点通常会从预测转向组别差异的分析。方差分析是一种能使多因素(多组间)检验变得简洁的一种检验方式,它能同时考虑所有的样本,不仅能使检验过程变得简洁还能排除因两两检验可能造成的错误累积的概率。这里学习方差分析最简单的部分——单因素方差分析。
一、方差分析的常用术语
学习方差分析首先需要知道它所说的专业性术语,如:因素、水平、协方差、因变量,自变量等。下面通过一个例子来看看这些术语具体是指什么,现有某企业的销售数据,里面记录了5天内3个不同地区的销售额(单位:百万),数据如下表所示:
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岁的用户等,因此年龄也可以解释为因变量间的组间差异(或混淆因素),如果我们对年龄不感兴趣,那么它就是干扰变数,如果我们提前知道年龄分布,那么我们可以在评估地区对销售额的影响前,对任何年龄段的组间差异进行调整,此时年龄称为协变量,该设计称为协方差分析。此外,当因变量不止一个时,设计称为多元方差分析,若协变量也存在,则称为多元协方差分析。
二、方差分析
方差分析简写为ANOVA,用于多组均数之间的显著性检验。要求各组观察值服从正态分布或近似正态分布,并且各组之间的方差具有齐性。基本思想:将所有测量值间的总变异按照其变异的来源分解为多个部份,然后进行比较,评价由某种因素所引起的变异是否具有统计学意义。
2.1 假设前提和模型设定
设单因素A有\(r\)个水平,分别记为\(A_{1},A_{2},...,A_{r}\),在每个水平\(A_{i}(i=1,2,...,r)\)下的观测指标变量样本值看做一个总体,故有\(r\)个总体,假设:
(1)每个总体均服从正态分布,且方差相等,即$$X_{i}\sim N(\mu_{i},\sigma^{2}),i=1,2,...,r$$
(2)每个总体中抽取的样本$$X_{i1},X_{i2},...,X_{in_{i}},i=1,2,...,r$$相互独立(\(n_{i}\)为\(A_{i}\)因素水平的实验数据个数)
通过假设检验来探究期望控制变量对观测指标变量是否有显著影响,如果有,则意味着A因素不同水平对应的观测指标变量总体的均值有显著差异。因而可作出如下假设:
\(H_{0}:\mu_{1}=\mu_{2}=...=\mu_{r}\);
\(H_{1}:\mu_{1},\mu_{2},...,\mu_{r}\)不完全相等
2.2 方差分析的任务
任务一:检验\(r\)个总体的均值是否相等,即完成上述假设的检验;
任务二:作出未知参数\(\mu_{1},\mu_{2},...,\mu_{r},\sigma^{2}\)的估计。
(1)均值相等的检验——方差分析表
由假设有\(X_{ij}\sim N(\mu_{i},\sigma^{2}) (\mu_{i},\sigma^{2}\,未知),i=1,2,...,r;j=1,2,...,n_{i}\),即有\(X_{ij}-\mu_{i}=\varepsilon _{ij}\sim N(0,\sigma^{2})\),故\(X_{ij}-\mu_{i}=\varepsilon _{ij}\)可视为随机误差,且相互独立,由假设前提知,各个\(\varepsilon_{ij}\)相互独立。从而得到模型:
\]
记数据总个数为
\]
总平均值为
\]
用\(A_{i}\)因素水平下的总体均值与总平均值的差异来表示\(A_{i}\)因素水平对观测指标变量的效应:\(\delta_{i}=\mu_{i}-\mu\)。效应间的关系为
\]
从而改写模型为:
\]
可得,前述假设等价为:
\(H_{0}:\delta_{1}=\delta_{2}=...=\delta_{r}=0\)
\(H_{1}:\delta_{1},\delta_{2},...,\delta_{r}\)不全为0
这是因为当且仅当\(\mu_{1}=\mu_{2}=...=\mu_{r}\)时,\(\mu_{i}=\mu(i=1,2,...,r)\)
记 \(A_i\) 因素水平下的样本均值为
\]
A因素的所有水平的样本总均值为
\]
组内离差平方和为:
\]
组间离差平方和为:
S S B &=\sum_{i=1}^r \sum_{j=1}^{n_i}\left(\bar{X}_i-\bar{X}\right)^2 \\
&=\sum_{i=1}^r n_i\left(\bar{X}_i-\bar{X}\right)^2 \\
&=\sum_{i=1}^r n_i \bar{X}_i^2-n \bar{X}^2
\end{aligned}
\]
总离差平方和为:
S S T &=\sum_{i=1}^r \sum_{j=1}^{n_i}\left(X_{i j}-\bar{X}\right)^2 \\
&=\sum_{i=1}^r \sum_{j=1}^{n_i}\left[\left(X_{i j}-\bar{X}_i\right)+\left(\bar{X}_i-\bar{X}\right)\right]^2 \\
&=\sum_{i=1}^r \sum_{j=1}^{n_i}\left(X_{i j}-\bar{X}_i\right)^2+\sum_{i=1}^r \sum_{j=1}^{n_i}\left(\bar{X}_i-\bar{X}\right)^2+2 \sum_{i=1}^r \sum_{j=1}^{n_i}\left(X_{i j}-\bar{X}_i\right)\left(\bar{X}_i-\bar{X}\right) \\
&=\sum_{i=1}^r \sum_{j=1}^{n_i}\left(X_{i j}-\bar{X}_i\right)^2+\sum_{i=1}^r \sum_{j=1}^{n_i}\left(\bar{X}_i-\bar{X}\right)^2 \\
&=S S W+S S B \\
S S T &=\sum_{i=1}^r \sum_{j=1}^{n_i}\left(X_{i j}-\bar{X}\right)^2=\sum_{i=1}^r \sum_{j=1}^{n_i} X_{i j}^2-n \bar{X}^2
\end{aligned}
\]
\(\text { 由 } \frac{\sum_{j=1}^{n_i}\left(X_{i j}-\bar{X}_i\right)^2}{\sigma^2}=\frac{\left(n_i-1\right) S_i^2}{\sigma^2} \sim \chi^2\left(n_i-1\right){\text {和 } \chi^2} \text { 分布的可加性,可得: }\)
\]
\]
SSB可以看做 \(r\) 个变量 \(\sqrt{n_i}\left(\overline{X_i}-\bar{X}\right)\) 的平方和,它们之间仅有一个线性约束条件:
\]
故知SSB的自由度是 \(r-1\) 。
E(S S B) &=E\left(\sum_{i=1}^r n_i \bar{X}_i^2-n \bar{X}^2\right) \\
&=\sum_{i=1}^r n_i E\left(\bar{X}_i^2\right)-n E\left(\bar{X}^2\right) \\
&=\sum_{i=1}^r n_i\left[\frac{\sigma^2}{n_i}+\mu_i^2\right]-n\left(\frac{\sigma^2}{n}+\mu^2\right) \\
&=\sum_{i=1}^r n_i\left[\frac{\sigma^2}{n_i}+\left(\mu+\delta_i\right)^2\right]-n\left(\frac{\sigma^2}{n}+\mu^2\right) \\
&=r \sigma^2+n \mu^2+\sum_{i=1}^r n_i \delta_i^2+2 \mu \sum_{i=1}^r n_i \delta_i+\sigma^2-n \mu^2 \\
&=(r-1) \sigma^2+\sum_{i=1}^r n_i \delta_i^2
\end{aligned}
\]
并且,由SSW和SSB表达式可知二者独立,所以,
当 \(H_0\) 为真时,
&\frac{S S B}{\sigma^2} \sim \chi^2(r-1) \\
&\frac{\frac{S S B}{(r-1) \sigma^2}}{\frac{S S W}{(n-r) \sigma^2}}=\frac{\frac{S S B}{(r-1)}}{\frac{S S W}{(n-r)}} \sim F(r-1, n-r)
\end{aligned}
\]
当 \(H_0\) 不为真时,
&E(S S B)=(r-1) \sigma^2+\sum_{i=1}^r n_i \delta_i^2>(r-1) \sigma^2 \\
&\frac{\frac{S S B}{(r-1)}}{\frac{S S W}{(n-r)}} \geqslant k
\end{aligned}
\]
因此可得拒绝域为:
\]
因SST的\(n\)个变量 \(X_{i j}-\bar{X}=\frac{1}{r} \sum_{i=1}^r \bar{X}_i=\frac{1}{n} \sum_{i=1}^r \sum_{j=1}^{n_i} X_{i j}\), 所以SSW的自由度为 \(n-1\) 。 据上述分析结果,可得方差分析表:
方差来源 | 平方和 | 自由度 | 均方 | F比 |
因素A | SSB | r-1 | ||
误差 | SSW | n-r | ||
总和 | SST | n-1 |
在实际中,可先计算SST和SSB,再由二者相减得到SSW,以简便计算。
(2)未知参数\(\mu_{1},\mu_{2},...,\mu_{r},\sigma^{2}\)的估计
由\(E(\overline{X})=\mu\)知,\(\mu\)的无偏估计为:\(\hat{\mu}=\overline{X}\)
由\(E(\overline{X}_{i})=\mu_{i}\)知,\(\mu_{i}\)的无偏估计为:\(\hat{\mu}_{i}=\overline{X}_{i}\)
不管\(H_{0}\)是否为真,\(E(\frac{SSW}{n-r})=\sigma^{2}\),可知\(\sigma^{2}\)的无偏估计为:\(\hat{\sigma^{2}}=\frac{SSW}{n-r}\)
当拒绝\(H_{0}\)时,效应\(\delta_{1},\delta_{2},...,\delta_{r}\)不全为0,且\(E(\delta_{i})=E(\mu_{i}-\mu)\),可知,\(\delta_{i}\)的无偏估计为\(\hat{\delta}_{i}=\hat{\mu}_{i}-\hat{\mu}=\overline{X}_{i}-\overline{X}\)
当拒绝\(H_{0}\)时,常常需要作出两总体\(N(\mu_{j},\sigma^{2})\)和\(N(\mu_{k},\sigma^{2})\),\(j\neq k\)的均值差\(\mu_{j}-\mu_{k}=\delta_{j}-\delta_{k}\)的区间估计,由于
\]
\]
并且\(\overline{X}_{j}-\overline{X}_{k}\)与\(\hat{\sigma^{2}}=\frac{SSW}{n-r}\)独立,于是,
\]
据此得均值差\(\mu_{j}-\mu_{k}=\delta_{j}-\delta_{k}\)的置信水平为1-\(\alpha\)的置信区间为:
\]
三、单因素方差分析举例
设有三台机器,用来生产规格相同的铝合金薄板,并且假定除了机器这一因素之外,其他条件都相同。取样并测量薄板的厚度精确到千分之一厘米,得到结果如下表:
machine1 | machine2 | machine3 |
---|---|---|
0.236 | 0.257 | 0.258 |
0.238 | 0.253 | 0.264 |
0.248 | 0.255 | 0.259 |
0.245 | 0.254 | 0.267 |
0.243 | 0.261 | 0.262 |
3.1 模型假设的检验——独立性检验、正态性检验、方差齐性检验
#数据建构
machine1=c(0.236,0.238,0.248,0.245,0.243)
machine2=c(0.257,0.253,0.255,0.254,0.261)
machine3=c(0.258,0.264,0.259,0.267,0.262)
data1=cbind(machine1,machine2,machine3)
machine1 machine2 machine3
[1,] 0.236 0.257 0.258
[2,] 0.238 0.253 0.264
[3,] 0.248 0.255 0.259
[4,] 0.245 0.254 0.267
[5,] 0.243 0.261 0.262
#数据重构
library(reshape2)
data <- melt(data1,id=c())#进行数据的合并重构
names(data) <- c('id', 'trt', 'val')
data
#独立性检验函数chisq.test()
data2<-table(data$trt,data$val)
chisq.test(data2)
#shaprio.test()正态性检验函数
shapiro.test(data$val)
#方差齐性检验函数bartlett.test()
bartlett.test(val~trt,data)
Pearson's Chi-squared test
data: data2
X-squared = 30, df = 28, p-value = 0.3632
Shapiro-Wilk normality test
data: data$val
W = 0.94835, p-value = 0.4989
Bartlett test of homogeneity of variances
data: val by trt
Bartlett's K-squared = 0.76975, df = 2, p-value = 0.6805
可得三大参数检验\(P\)>0.05,即接受原假设,数据满足独立性,正态性和方差齐性。
3.2方差分析表
下面检验三个总体的均值是否相等,做出假设:
\(H_{0}:\mu_{1}=\mu{2}=\mu{3}\)
\(H_{1}:\mu_{1},\mu_{2},\mu_{3}\)不全相等
由数据可知,\(r\)=3,\(n_{1}=n_{2}=n_{3}=5\),\(n\)=15,则,
\]
\]
library(reshape2)
data <- melt(data1,id=c())#进行数据的合并重构
names(data) <- c('id', 'trt', 'val')
aov=aov(val~trt,data=data)
summary(aov)
Df Sum Sq Mean Sq F value Pr(>F)
trt 2 0.001053 0.0005267 32.92 1.34e-05 ***
Residuals 12 0.000192 0.0000160
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
方差来源 | 平方和 | 自由度 | 均方 | F比 |
---|---|---|---|---|
因素 | 0.001053333 | 2 | 0.0005266667 | 32.91667 |
误差 | 0.000192000 | 12 | 0.0000160000 | |
总和 | 0.001245333 | 14 |
F比=32.92>\(F_{0.05}(2,12)\)=3.885294,故在0.05显著性水平下拒绝\(H_{0}\),认为各台机器生产的薄板厚度有显著的差异。
3.3 参数估计
接着对未知参数\(\sigma^{2},\mu_{i},\delta_{i}(i=1,2,3)\)进行点估计以及求均值差的0.95置信区间
\]
\]
\]
\]
\]
#数据建构
machine1=c(0.236,0.238,0.248,0.245,0.243)
machine2=c(0.257,0.253,0.255,0.254,0.261)
machine3=c(0.258,0.264,0.259,0.267,0.262)
Data1=data.frame(machine1,machine2,machine3)
n=15
r=3
n1=n2=n3=5
SST=sum(c(Data1$machine1**2,
Data1$machine2**2,
Data1$machine3**2))-(sum(Data1)**2)/n
SSB=sum(c((sum(Data1$machine1)**2)/n1,
(sum(Data1$machine2)**2)/n2,
(sum(Data1$machine3)**2)/n3))-(sum(Data1)**2)/n
SSW=SST-SSB
hatsigma2=SSW/(n-r)
hatmu=mean(c(mean(Data1$machine1),
mean(Data1$machine2),
mean(Data1$machine3)))
tab2=data.frame(matrix(nrow = 2,ncol = 3))
colnames(tab2)=c("machine1","machine2","machine3")
rownames(tab2)=c("hatmu","hatdelta")
tab2[1,1]=mean(Data1$machine1)
tab2[1,2]=mean(Data1$machine2)
tab2[1,3]=mean(Data1$machine3)
tab2[2,1]=tab2[1,1]-hatmu
tab2[2,2]=tab2[1,2]-hatmu
tab2[2,3]=tab2[1,3]-hatmu
tab3=data.frame(matrix(nrow = 3,ncol = 2))
colnames(tab3)=c("lower","upper")
rownames(tab3)=c("interval12","interval13","interval23")
t=qt(1-0.025,n-r)
tab3[1,1]=mean(Data1$machine1)-mean(Data1$machine2)-
t*sqrt(SSW/(n-r)*(1/n1+1/n2))
tab3[1,2]=mean(Data1$machine1)-mean(Data1$machine2)+
t*sqrt(SSW/(n-r)*(1/n1+1/n2))
tab3[2,1]=mean(Data1$machine1)-mean(Data1$machine3)-
t*sqrt(SSW/(n-r)*(1/n1+1/n3))
tab3[2,2]=mean(Data1$machine1)-mean(Data1$machine3)+
t*sqrt(SSW/(n-r)*(1/n1+1/n3))
tab3[3,1]=mean(Data1$machine2)-mean(Data1$machine3)-
t*sqrt(SSW/(n-r)*(1/n2+1/n3))
tab3[3,2]=mean(Data1$machine2)-mean(Data1$machine3)+
t*sqrt(SSW/(n-r)*(1/n2+1/n3))
总结
在进行数据分析之前,我们要对试验数据进行检验,即独立性检验、正态性检验、方差齐性检验,若三者检验符合条件,则我们可以进行参数分析,如果不符合条件则只能进行非参数分析。
(参数分析:假定数据服从某分布(一般为正态分布),通过样本参数的估计量(x±s)对总体参数(μ)进行检验,比如t检验、方差分析、Pearson的相关分析等。非参数分析:不需要假定总体分布形式,直接对数据的分布进行检验。由于不涉及总体分布的参数,故名「非参数」检验,包括卡方检验、二项分布检验、K-S检验、秩和检验、符号检验、Spearman和Kendall的相关性分析等)。
参考文献
统计学——单因素方差分析
R语言基础数据分析—单因素方差分析
最新文章
- Laravel 5.x 请求的生命周期(附源码)
- 请慎用java的File#renameTo(File)方法
- C#获取图片的后缀名
- DELPHI XE5
- css伪类选择器及伪元素选择器
- 嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化
- LeetCode 【21. Merge Two Sorted Lists】
- photoshop CS 调整选择区域的大小
- wamp集成环境php多版本搭建(php5.5,php5.6,php7.0.6)
- java设计模式--结构型模式--桥接模式
- 在线程中建立Form遇到的问题
- 使用Iterator遍历Sheet(POI)验证及解释结果有序性
- Linux0.11 中对地址的管理
- U盘挂载指令
- 数字进度条组件NumberProgressBar
- ubuntu (14.04) 卸载 gnome 系统桌面
- VS2013 生成时复制文件或目录到指定目录
- P2246 SAC#1 - Hello World(升级版)
- Analytics.js简介
- TNS-12549问题分析及解决办法