方差分析(Analysis of Variance, ANOVA) - ricket-sjtu/bi028 GitHub Wiki
ANOVA分析
当进行ANOVA分析时,必然存在一个应变量(response/dependent variable)和1+个自变量(independent/explanatory variables),其中一般应变量是连续的(continuous);而自变量是离散的(discrete/categorical),对应在R里面就是因子变量(factor)。
模型的形式
模型 | 意义 |
---|---|
y ~ x1 |
One-Way ANOVA: y is explained by x1 only |
y ~ x1 + x2 |
Two-Way ANOVA: y is explained by x1 and x2 |
y ~ x1 + x2 + x3 |
Three-Way ANOVA: y is explained by x1, x2 and x3 |
y ~ x1*x2 |
y is explained by x1, x2 and also their interaction |
ANOVA分类
- 单因素组间方差分析
- 单因素组内方差分析
- 双因素方差分析
- 混合模型方差分析(同时存在组内和组间因子)
- 多元方差分析(当应变量为多个时):outcome是多元的
- 协方差分析(存在除了因子之外的混淆变量,也成为协变量):同时存在分类变量和连续变量
一般方差分析采用stats
包中的aov()
函数,在表达式中左端为应变量,而右端为因子和协变量。当
- 存在多个因子,且为非平衡试验设计;
- 存在协变量; 的时候,表达式右端的顺序会影响分析的结果。
一般的顺序
- 协变量
- 因素,越基础的效应放在越前面
- 双因素的交互项
- 多因素的交互项
aov(){stats}
与Anova(){car}
两个函数分别进行的式I类和II类、III类方差分析。
单因素方差分析
单因素方差分析的条件有两个:
- 应变量符合正态分布:正态性检验可通过QQ-plot进行,
qqnorm(){stats}
,qqline(){stats}
; - 各组方差相同:方差齐性检验
- Bartlett检验:
bartlett.test(){stats}
- Fligner-Killeen检验:
fligner.test(){stats}
- Brown-Forsythe检验:
hov(){HH}
- 无离群点(离群点影响方差齐性检验的准确性):
outlierTest(){car}
多重比较分析(multiple comparisons)
pairwise.t.test(){stats}
可进行两两t-检验;TukeyHSD(){stats}
是进行多重检验的首选;glht(){multcomp}
除了适用于lm
以外,还适用于glm
对象
单因素协方差分析(mono-factorial ANCOVA)
ANCOVA是对ANOVA的扩展,包含一个或多个协变量(covariates)。
- 调整后的组均值(也就是去除了协变量的效应后的组均值)可用
effect(){effects}
; {multcomp}
可用来检验用户自定义的均值假设;- 绘图可通过
ancova(){HH}
函数进行; - 评估检验的假设条件:
- 正态性假设;
- 方差齐性假设;
- 回归斜率相同假设:如果因子与协变量的交互项不显著,则支持斜率相同的假设。
双因素方差分析(Bi-factorial ANOVA)
- 双因素方差分析同单因素方差分析,多重检验和假设验证也同上;
- 结果的可视化推荐使用
interaction2wt(){HH}
函数,该函数能展示任意复杂度多因素设计的主效应(箱线图)和交互效应。
重复测量方差分析(repeated measured ANOVA)
多元方差分析(multivariate ANOVA, MANOVA)
当应变量超过一个时,需要用到多元方差分析进行分析。
- 可用
manova(){stats}
函数进行分析; - 假设检验:
- 多元正态性假设;
- 方差-协方差矩阵同质性假设
稳健多元方差分析和非参数多元方差分析
当多元正态性假设和方差-协方差同质性假设不能满足,或者存在多元离群点时,需要用到稳健多元方差分析或非参数多元方差分析:
- 稳健多元方差分析用
Wilks.test(){rrcov}
函数实现; - 非参数多元方差分析用
adonis(){vegan}
函数实现