在做多因素方差分析时,有三种方法计算平方和(以模型Y ~ A + B + A:B为例,即先输入A,再输入B,最后输入交互项A:B):Type Ⅰ Sums of Squares(Type1, sequential)
序贯型,后输入的因素根据之前输入的因素做调整,与输入顺序有关(A不做调整,B根据A做调整,A:B根据A和B做调整,因此使用Type1要注意模型中各因素的输入顺序)。
Type Ⅱ Sums of Squares(Type2, hierarchical)
分层型,根据同阶水平和低阶水平的因素做调整,与输入顺序无关(A和B同是一阶的,A根据B做调整,B根据A做调整;A:B是二阶的,因而A:B根据A和B做调整)。
Type Ⅲ Sums of Squares(Type3, marginal)
边界型,根据其他所有因素做调整,与输入顺序无关(A根据B和A:B做调整,B根据A和A:B做调整,A:B根据A和B做调整)。
这些分类在参考文献中有详细的介绍。当数据均衡(data is balanced,即各水平的样本量相等),且因素是正交的(factories are orthogonal,即各因素独立,讨论见:R gives Type I, Python gives Type II, SAS gives Type III.[1]Default Types of Sums of Squares for different programming languages[1]Decision Tree for Different Types of Sums of Squares in ANOVA[1]
SAS
这些分类似乎最初是在SAS中就有的,随后被广泛引入统计领域。不过SAS帮助文档[2]中多了一个Type Ⅳ。SAS使用PROC GLM过程步,改变CLASS和MODEL的取值来选择使用哪种方法。默认为Type3.
R
R中的aov()和anova()使用Type1,car包的Anova()可以指定参数type为2或3来选择Type2或Type3。
三种方法的原理及R语言实现:
[3] 给出了三种方法的原假设的公式表达
[4] 通俗的平方和分解的公式语言
R语言实现:
[5], [6]
Python
Python默认是Type2.
[7] 举例讲解了TypeⅠ和TypeⅢ,并用python实现
参考文献
[8]Robert I. Kabacoff.R In Action[M].Manning:New York,2015:212-218.