1.方差分析(Analysis of variance, ANOVA)
1.1 基本概念
- 方差分析就是对试验数据进行分析,检验方差相等的多个正态总体均值是否相等,进而判断各因素对试验指标的影响是否显著。方差分析主要通过F检验来进行效果评测,
- F检验(F-test),最常用的别名叫做联合假设检验,此外也称方差比率检验、方差齐性检验。它是一种在零假设(H0)之下,统计值服从F-分布的检验。其通常是用来分析用了超过一个参数的统计模型,以判断该模型中的全部或一部分参数是否适合用来估计母体。
- 分类变量(categorical variable)是说明事物类别的一个名称,其取值是分类数据。其变量值是定性的,表现为互不相容的类别或属性。如“性别”就是一个分类变量,其变量值为“男”或“女”;“行业”也是一个分类变量,其变量值可以为“零售业”、“旅游业”、“汽车制造业”等。
- 组间因子是多个互不相干的组的因子、变量,比如分类变量的变量值(水平),“性别”是一个分类变量,其变量值“男”或“女”是一对组间因子。
- 均衡设计必须满足下列条件:(1)每个水平组合下进行试验的次数相同;(2)每个区组容纳的水平数相同;(3)不同的交互效应没有相关性,并且每个交互效应上完全均衡。与之相对应的称作非均衡设计
- 单因素方差分析(one-way ANOVA),或进一步称为单因素组间方差分析试验中要考察的指标称为试验指标,影响试验指标的条件称为因素,因素所处的状态称为水平,若试验中只有一个因素改变则称为单因素试验,若有两个因素改变则称为双因素试验,若有多个因素改变则称为多因素试验。以此类推。若因子设计包括组内和组间因子,又称作混合模型方差分析
- 重复测量方差分析,即每个受试对象在不同的水平下进行了重复测量。
- 主效应,描述一个因子在各水平上对反应量(因变量)影响大小的度量。
- 交互效应,当被试处理情境之间或单元之间的平均数差异显著不同于因素的全部主效应时,双因素之间的交互作用就发生了。或者可以这样理解,当双因素实验研究的结果以图形呈现的时候,如果存在不平行的折线,则说明存在交互作用。、
- 协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响实验结果。协变量(covariate)在心理学、行为科学中,是指与因变量有线性相关并在探讨自变量与因变量关系时通过统计技术加以控制的变量。常用的协变量包括因变量的前测分数、人口统计学指标以及与因变量明显不同的个人特征等。
- 协方差分析 亦称“共变量(数)分析”。方差分析的引申和扩大。基本原理是将线性回归与方差分析结合起来,调整各组平均数和 F 检验的实验误差项,检验两个或多个调整平均数有无显著差异,以便控制在实验中影响实验效应(因变量)而无法人为控制的协变量(与因变量有密切回归关系的变量)在方差分析中的影响。
- 随机误差也称为偶然误差和不定误差,是由于在测定过程中一系列有关因素微小的随机波动而形成的具有相互抵偿性的误差。其产生的原因是分析过程中种种不稳定随机因素的影响,如室温、相对湿度和气压等环境条件的不稳定,分析人员操作的微小差异以及仪器的不稳定等。随机误差的大小和正负都不固定,但多次测量就会发现,绝对值相同的正负随机误差出现的概率大致相等,因此它们之间常能互相抵消,所以可以通过增加平行测定的次数取平均值的办法减小随机误差。
- 显著性,又称统计显著性(Statistical significance), 是指零假设为真的情况下拒绝零假设所要承担的风险水平,又叫概率水平,或者显著水平
1.2 单因素方差分析的方差分析表
在统计学上,通常称
S
S
SS
SS为总平方和,
S
S
A
SS_A
SSA为因素
A
A
A的平方和,
S
S
e
SS_e
SSe为误差平方和,分解式
S
S
=
S
S
A
+
S
S
e
SS=SS_A+SS_e
SS=SSA+SSe为该模型的方差分析
当比值
S
S
A
/
S
S
e
SS_A/SS_e
SSA/SSe大于某一给定界限时,否定
H
0
H_0
H0,不然就接受
H
0
H_0
H0。为了构造
F
F
F分布的检验统计量,我们假定随机误差
e
i
j
e_{ij}
eij满足正态分布
N
(
0
,
σ
2
)
N(0, \sigma^2)
N(0,σ2),同时我们也假定观察值
Y
i
j
Y_{ij}
Yij符合正态分布,此时,记
M
S
A
=
S
S
A
/
(
k
−
1
)
,
M
S
e
=
S
S
e
/
(
n
−
k
)
MS_A = SS_A/(k-1), \quad MS_e = SS_e/(n-k)
MSA=SSA/(k−1),MSe=SSe/(n−k) 当
H
0
H_0
H0成立时,有:
M
S
A
/
M
S
e
∼
F
k
−
1
,
n
−
k
MS_A / MS_e \sim F_{k-1, n-k}
MSA/MSe∼Fk−1,n−k 据(5.9),在给定显著性水平
α
\alpha
α时,即得(5.3)的假设
H
0
H_0
H0的检验如下:
当
M
S
A
/
M
S
e
⩽
F
k
−
1
,
n
−
k
(
α
)
时
,
接
受
H
0
,
不
然
就
拒
绝
H
0
当MS_A / MS_e \leqslant F_{k-1, n-k}(\alpha)时,接受H_0,不然就拒绝H_0
当MSA/MSe⩽Fk−1,n−k(α)时,接受H0,不然就拒绝H0
项目 | S S SS SS | 自由度 | M S MS MS | F F F比 | 显著性 |
---|---|---|---|---|---|
A A A | S S A SS_A SSA | k − 1 k-1 k−1 | M S A MS_A MSA | M S A / M S e MS_A / MS_e MSA/MSe | *, **, 或无 |
误差 | S S e SS_e SSe | n − k n-k n−k | M S e MS_e MSe | ||
总和 | S S SS SS | n − 1 n-1 n−1 |
在上表中,对于显著性一栏,一般来说,我们把算出的 F F F比,即 M S A / M S e MS_A / MS_e MSA/MSe,与 F k − 1 , n − k ( 0.05 ) = c 1 F_{k-1, n-k}(0.05)=c_1 Fk−1,n−k(0.05)=c1和 F k − 1 , n − k ( 0.01 ) = c 2 F_{k-1, n-k}(0.01)=c_2 Fk−1,n−k(0.01)=c2比较。若 M S A / M S e > c 2 MS_A / MS_e>c_2 MSA/MSe>c2,用**表示,表明A因素的效应是高度显著的,即在 α = 0.01 \alpha=0.01 α=0.01的显著性水平下,拒绝原假设(5.3)。同理, c 2 < M S A / M S e < c 1 c_2<MS_A / MS_e<c_1 c2<MSA/MSe<c1用 ∗ \ast ∗表示, M S A / M S e > c 1 MS_A / MS_e>c_1 MSA/MSe>c1时不显著。
1.3 双因素方差分析
项目 | S S SS SS | 自由度 | M S MS MS | F F F比 | 显著性 |
---|---|---|---|---|---|
A A A | S S A SS_A SSA | k − 1 k-1 k−1 | M S A MS_A MSA | M S A / M S e MS_A / MS_e MSA/MSe | *, **, 或无 |
B B B | S S B SS_B SSB | l − 1 l-1 l−1 | M S B MS_B MSB | M S B / M S e MS_B / MS_e MSB/MSe | |
误差 | S S e SS_e SSe | ( k − 1 ) ( l − 1 ) (k - 1) (l - 1) (k−1)(l−1) | M S e MS_e MSe | ||
总和 | S S SS SS | k l − 1 kl-1 kl−1 |
2.代码实例
由于没有学习过R语言,这里照搬部分原文,作学习使用
02 数据挖掘基础方法/概率统计/4. 方差分析
单因素方差分析的R语言实现
单因素方差分析中,你感兴趣的是比较分类因子定义的两个或多个组别中的因变量均值。以multcomp包中的cholesterol数据集为例,50个患者均接受降低胆固醇药物治疗(trt)五种疗法中的一种疗法。其中三种治疗条件使用药物相同,分别是20mg一天一次(1time)、10mg一天两次(2times)和5mg一天四次(4times)。剩下的两种方式(drugD和drugE)代表候选药物。
> library(multcomp)
> attach(cholesterol)
>
> # 统计各组样本大小
> table(trt)
trt
1time 2times 4times drugD drugE
10 10 10 10 10
>
> # 各组均值
> aggregate(response, by=list(trt), FUN=mean)
Group.1 x
1 1time 5.78197
2 2times 9.22497
3 4times 12.37478
4 drugD 15.36117
5 drugE 20.94752
>
> # 各组标准差
> aggregate(response, by=list(trt), FUN=sd)
Group.1 x
1 1time 2.878113
2 2times 3.483054
3 4times 2.923119
4 drugD 3.454636
5 drugE 3.345003
>
> # 进行方差分析
> fit <- aov(response ~ trt)
> summary(fit)
Df Sum Sq Mean Sq F value Pr(>F)
trt 4 1351.4 337.8 32.43 9.82e-13 ***
Residuals 45 468.8 10.4
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
查看各水平对应的组均值的差异
gplots包中的plotmeans()可以用来绘制带有置信区间的组均值图形。图形展示了带有95%的置信区间的各疗法均值,可以清楚看到它们之间的差异。
library(gplots)
plotmeans(response ~ trt, xlab="Treatment", ylab="Response",
main="Mean Plot\nwith 95% CI")
detach(cholesterol)
2-1 五种降低胆固醇药物疗法的均值,含95%的置信区间
多重比较
虽然ANOVA对各疗法的F检验表明五种药物疗法效果不同,但是并没有告诉你哪种疗法与其他疗法不同。多重比较可以解决这个问题。例如,TukeyHSD()函数提供了对各组均值差异的成对检验。
> TukeyHSD(fit)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = response ~ trt)
$trt
diff lwr upr p adj
2times-1time 3.44300 -0.6582817 7.544282 0.1380949
4times-1time 6.59281 2.4915283 10.694092 0.0003542
drugD-1time 9.57920 5.4779183 13.680482 0.0000003
drugE-1time 15.16555 11.0642683 19.266832 0.0000000
4times-2times 3.14981 -0.9514717 7.251092 0.2050382
drugD-2times 6.13620 2.0349183 10.237482 0.0009611
drugE-2times 11.72255 7.6212683 15.823832 0.0000000
drugD-4times 2.98639 -1.1148917 7.087672 0.2512446
drugE-4times 8.57274 4.4714583 12.674022 0.0000037
drugE-drugD 5.58635 1.4850683 9.687632 0.0030633
> par(las=2)
> par(mar=c(5,8,4,2))
> plot(TukeyHSD(fit))
图形中置信区间包含0的疗法说明差异不显著(p>0.05)。