方差分析的类型

Posted by rogerclarkgc on 周一 03 九月 2018

在实际使用方差分析时,会发现许多软件都提供三种方差分析,分别称为“Type-i”,“Type-ii”和“Type-iii”。这里简称为“一型”、“二型”和“三型”方差分析。在R语言里,stat包里anova函数采用的是一型的方差分析,如果要使用后面两种,需要额外加载car包并使用里面的Anova函数。这三种方差分析,尤其是一型与其他两种之间,有较大的不同,下面就来介绍这三种方差分析的不同之处。

一型方差分析

一型方差分析是有顺序性的,如果对于一个两个因子$A$和$B$的方差模型:

$y_{ij}=a_i + b_j + c_{ij} + e_{ij}$

用\(SS_A,SS_B, SS_{AB},SS_{A,B}\)分别代表因子\(A\),因子\(B\),交互效应和总体模型的方差,一型方差分析会按照如下顺序计算:

  • 首先计算\(SS_A\)
  • 去除因子\(A\)的效应来计算\(SS_{B}\)
  • 去除因子\(A\)和\(B\)的效应计算交互项\(SS_{AB}\)

一型方差分析是根据模型里因子的顺序来计算方差的,对于非均衡的因子层次,这种计算方式会因为计算顺序不同而导致结果差异,进而产生功效不足的问题。(对均衡设计的实验,这三种方差分析结果是相同的)

mtcars数据集为例,这个数据集有多个因子对因变量\(mpg\)产生影响,现只考虑变量\(vs\)和\(gear\),这时数据的层次如下

    >library(car)
    >with(mtcars, table(vs, gear))

          gear
    vs   3  4  5
    0    12  2  4
    1    3 10  1

可以看到因子\(gear\)有三个层次,\(vs\)有两个层次,各个层次组合里观测数不一样,是一个非均衡实验设计。如果使用的一型方差分析。结果会随着因子顺序不同而变化:

mtc <- mtcars
mtc$vsf <- as.factor(mtcars$vs)
mtc$gearf <- as.factor(mtcars$gear)
#效应gear在前
anova(lm(mpg ~ gearf + vsf, data=mtc))
#效应vs在前
anova(lm(mpg ~ vsf + gearf, data=mtc))

结果如下

Analysis of Variance Table

Response: mpg
          Df Sum Sq Mean Sq F value    Pr(>F)    
gearf      2 483.24 241.622  14.310 5.231e-05 ***
vsf        1 170.04 170.039  10.071  0.003642 ** 
Residuals 28 472.77  16.884                      
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1
Analysis of Variance Table

Response: mpg
          Df Sum Sq Mean Sq F value   Pr(>F)    
vsf        1 496.53  496.53  29.407 8.74e-06 ***
gearf      2 156.75   78.38   4.642  0.01815 *  
Residuals 28 472.77   16.88                     
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1

可以看到,结果发生了变化,把\(gear\)当第一个变量作为主效应时,具有强的显著性,而当成第二个变量的显著性就要低的多。这种情况对一型检验的功效性产生了影响,如果检验统计量\(F\)恰好在设定的\(u_{\alpha}\)附近,调换位置就是否接受零假设造成很大影响。

二型方差分析

二型方差分析没有主效应和副效应的区分,对所有的效应都是在去除其他效应影响的前提下进行,也就是说

  • 去除因子\(B\)的效应来计算\(SS_{A}\)
  • 去除因子\(A\)的效应来计算\(SS_{B}\)
  • 去除因子\(A\)和\(B\)的效应计算交互项\(SS_{AB}\)

这样来看,二型分析其实可以用多次一型分析来代替,首先进行先\(A\)后\(B\)的一型分析,然后进行先\(B\)后\(A\)的一型分析,这样作为副效应的两个因子的\(F\)值是一样的。

R语言下默认没有提供二型分析,需要加载car包使用Anova函数来进行

#效应gear在前
Anova(lm(mpg ~ gearf + vsf, data=mtc), type=2)
#效应vs在前
Anova(lm(mpg ~ vsf + gearf, data=mtc), type=2)

结果如下

Anova Table (Type II tests)

Response: mpg
          Sum Sq Df F value   Pr(>F)   
gearf     156.75  2   4.642 0.018152 * 
vsf       170.04  1  10.071 0.003642 **
Residuals 472.77 28                    
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1
Anova Table (Type II tests)

Response: mpg
          Sum Sq Df F value   Pr(>F)   
vsf       170.04  1  10.071 0.003642 **
gearf     156.75  2   4.642 0.018152 * 
Residuals 472.77 28                    
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1

可以看出,对不均衡设计,使用二型方差分析,即使交换了因子顺序也不会产生结果上的变化。这样比一型方差分析功效更强。

三型方差分析

前面的两种方差分析都没有在方差分解时去除交互效应的影响,而三型方差分析假定交互效应是存在且显著的,并且总是会从方差分解中去除这一影响。

  • 去除因子\(B\)和交互项的效应来计算\(SS_{A}\)
  • 去除因子\(A\)和交互项的效应来计算\(SS_{B}\)
  • 去除因子\(A\)和\(B\)的效应计算交互项\(SS_{AB}\)

三型方差分析同二型一样,不会受方差分解时因子的顺序而影响,但当交互效应不显著或者不存在时,三型方差分析会大大降低分析的功效,让一些本来显著的因子得出不甚显著的结果,还是用mtcars数据来做例子

#效应gear在前
Anova(lm(mpg ~ gearf * vsf, data=mtc), type=3)
#效应vs在前
Anova(lm(mpg ~ vsf * gearf, data=mtc), type=3)

结果如下:

Anova Table (Type III tests)

Response: mpg
             Sum Sq Df  F value    Pr(>F)    
(Intercept) 2718.03  1 159.1108 1.376e-12 ***
gearf         93.05  2   2.7235   0.08436 .  
vsf           66.99  1   3.9217   0.05834 .  
gearf:vsf     28.62  2   0.8376   0.44409    
Residuals    444.15 26                       
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1
Anova Table (Type III tests)

Response: mpg
             Sum Sq Df  F value    Pr(>F)    
(Intercept) 2718.03  1 159.1108 1.376e-12 ***
vsf           66.99  1   3.9217   0.05834 .  
gearf         93.05  2   2.7235   0.08436 .  
vsf:gearf     28.62  2   0.8376   0.44409    
Residuals    444.15 26                       
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1

可以看到原本显著的因子vsgear现在显著性大大降低,这样的结果与前面的相差很大,这可能是由于交互项的自由度降低了检验的功效。

三种方法的比较

对因子层次均衡且因子直接相互正交的实验数据(即不存在交互效应),三种方法结果上没有区别,如果是不均衡的实验设计且确定因子之间存在交互作用,三型分析较之二型分析更有效,反之,交互效应不显著,二型分析更优。

可以按照如下的步骤来进行选择使用何种方差分析:

  • 先用一型方差分析来探索模型,确认交互项是否存在
  • 如果存在交互效应,使用三型方差分析更优,如果不存在,使用二型
  • 对均衡的因子设计,没有发现交互效应时,三种方法结果一样

关于如何选择方法上,Øyvind Langsrud的论文“ANOVA for unbalanced data: Use Type II instead of Type III sums of squares”有详细论述。

tags: R, math, note