方差分析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语言基础数据分析—单因素方差分析
方差分析1—单因素方差分析(R语言)的更多相关文章
- 时间序列 预测分析 R语言
在对短期数据的预测分析中,我们经常用到时间序列中的指数平滑做数据预测,然后根据不同. 下面我们来看下具体的过程 x<-data.frame(rq=seq(as.Date('2016-11-15' ...
- 【数据分析 R语言实战】学习笔记 第八章 方差分析与R实现
方差分析泛应用于商业.经济.医学.农业等诸多领域的数量分析研究中.例如商业广告宣传方面,广告效果可能会受广告式.地区规模.播放时段.播放频率等多个因素的影响,通过方差分析研究众多因素中,哪些是主要的以 ...
- R语言中文社区历史文章整理(类型篇)
R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...
- R语言实战(五)方差分析与功效分析
本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...
- 实验的方差分析(R语言)
实验设计与数据处理(大数据分析B中也用到F分布,故总结一下,加深印象)第3课小结--实验的方差分析(one-way analysis of variance) 概述 实验结果\(S\)受多个因素\(A ...
- 用R语言分析我的fitbit计步数据
目标:把fitbit的每日运动记录导入到R语言中进行分析,画出统计图表来 已有原始数据:fitbit2014年每日的记录电子表格文件,全部数据点此下载,示例如下: 日期 消耗卡路里数 步 距离 攀爬楼 ...
- survival analysis 生存分析与R 语言示例 入门篇
原创博客,未经允许,不得转载. 生存分析,survival analysis,顾名思义是用来研究个体的存活概率与时间的关系.例如研究病人感染了病毒后,多长时间会死亡:工作的机器多长时间会发生崩溃等. ...
- 利用R语言打造量化分析平台
利用R语言打造量化分析平台 具体利用quantmod包实现对股票的量化分析 1.#1.API读取在线行情2.#加载quantmod包3.if(!require(quantmod)){4. instal ...
- R语言和数据分析十大:购物篮分析
提到数据挖掘,我们的第一个反应是之前的啤酒和尿布的故事听说过,这个故事是一个典型的数据挖掘关联规则.篮分析的传统线性回归之间的主要差别的差别,对于离散数据的相关性分析: 常见的关联规则: 关联规则:牛 ...
- R语言结合概率统计的体系分析---数字特征
现在有一个人,如何对这个人怎么识别这个人?那么就对其存在的特征进行提取,比如,提取其身高,其相貌,其年龄,分析这些特征,从而确定了,这个人就是这个人,我们绝不会认错. 同理,对数据进行分析,也是提取出 ...
随机推荐
- sscms自己从数据库筛选内容
where条件除了SiteId和ChannelId之外, 还需要加上IsChecked='True',而不是CheckedLevel
- 【jinja2】Python根据模板生成HTML文件并加载进QWebEngineView
前言 继前文Python在PyQt5中使用ECharts绘制图表中在Python程序中添加网页展示ECharts图表,和Python使用QWebEngineView时报错Uncaught Refere ...
- SpringCloud设置随机端口后的问题
问题描述 SpringCloud服务提供者,设定了随机端口配置后,在EurekaServer中的注册端口.Tomcat的web端口.运行中获取到的server.port配置端口,共出现了4个不同的端口 ...
- DML操作数据
添加数据 insert into 表名(列的名称)(数据);ps:列的名称用` `包围可以减少出错 添加全部数据的时候可以把列的名称省略: 修改数据 update 表名 set 列名=数据,列名= ...
- 下载Vue.js输入Vue -V报错解决办法
报错如图所示 解决办法: 1. 以管理员身份运行vscode; 2. 执行:get-ExecutionPolicy,显示Restricted,表示状态是禁止的; 3. 执行:set-Execution ...
- C#.NET系列●接口抽象类
一.接口基本概念 (1)接口:是把公共方法和属性组合起来,以封装特定功能的一个集合.创建接口时,一般一大写的I开头,接口中的成员都是公有的. 接口定义如下: interface IClown //写一 ...
- RKO队——冲刺随笔(4)
这个作业属于哪个课程 至诚软工实践F班 这个作业要求在哪里 第五次团队作业:项目冲刺 这个作业的目标 记录冲刺计划.要求包括当天会议照片.会议内容以及项目燃尽图(项目进度) 1.昨日进展 对小程序的的 ...
- redis缓存lua脚本过多导致内存占用很多问题
现象 生产某集群各节点已使用内存比较大,在清理了大量业务无用数据后,节点已使用内存却未下降. 排查与分析 通过info memory命令查看,内存碎片率略高,但是对某个主节点新添加的从节点内存使用依然 ...
- Ubuntu系统Root用户无法登录解决办法
默认 系统 root 登录 图形界面,出现 登录失败.解决方法如下: 1,登录普通用户, 打开终端执行命令, 使用su root或sudo -i切换到root用户(必须) su root 按照提示输入 ...
- Tutorial_WorkflowProcessor usage in AX 2012
Check under system administration if the BC proxy and workflow excecution account are still valid. C ...