方差分析(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()函数,在表达式中左端为应变量,而右端为因子和协变量。当

  • 存在多个因子,且为非平衡试验设计;
  • 存在协变量; 的时候,表达式右端的顺序会影响分析的结果。

一般的顺序

  1. 协变量
  2. 因素,越基础的效应放在越前面
  3. 双因素的交互项
  4. 多因素的交互项

aov(){stats}Anova(){car}两个函数分别进行的式I类和II类、III类方差分析。

单因素方差分析

单因素方差分析的条件有两个:

  1. 应变量符合正态分布:正态性检验可通过QQ-plot进行,qqnorm(){stats}qqline(){stats}
  2. 各组方差相同:方差齐性检验
  • Bartlett检验:bartlett.test(){stats}
  • Fligner-Killeen检验:fligner.test(){stats}
  • Brown-Forsythe检验:hov(){HH}
  1. 无离群点(离群点影响方差齐性检验的准确性):outlierTest(){car}

多重比较分析(multiple comparisons)

  1. pairwise.t.test(){stats}可进行两两t-检验;
  2. TukeyHSD(){stats}是进行多重检验的首选;
  3. 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}函数实现