方差分析(ANOVA)

什么是方差分析?

前面的各种模型都可以归纳为在解决预测问题,

Q:如何评价预测结果的好坏?

A:预测与观测越接近越好。

Q:如何刻画”接近”?

A:需要定义”距离”,一般我们使用残差的平方和(L2 loss) 记为SS(Sum of Squares) \[ SS = \sum\limits_{i = 1}^n {{{({y_i} - {\varphi _i})}^2} = ||{\bf{y}} - {\bf{\varphi }}|{|^2}} \\ 其中,y_i是实际观测值,\varphi_i是模型预测值。 \] 它是我们给出的预测\(\varphi\)的函数

我们希望最小化残差的平方和(目标)

Q:如果我们只有y的信息,我们应该如何预测?

A:使用均值去预测所有情况

记此时的残差平方和为SST(Sum of Squares Total) \[ SST = \sum\limits_{i = 1}^n {{{({y_i} - {\rm{\bar y}})}^2}} \] 除以n-1后正好是y方差的估计量 \[ Var(y) = \frac{1}{{n - 1}}\sum\limits_{i = 1}^n {{{({y_i} - {\rm{\bar y}})}^2}} \] Q:如果我们还有x的信息,我们能否改进我们的预测?

A:使用各种模型去刻画x与y的关系,记新的预测为\(\hat y_i\)

并记此时的残差平方和为SSE(Sum of Squares Error) \[ SSE = \sum\limits_{i = 1}^n {{{({y_i} - {{\hat y}_i})}^2}} \] 显然SSE<=SST(因为不应该预测得更差, 当R square小于0时,说明模型拟合结果比直接用均值来预测效果更差)。

一个重要的观察是两个平方和的差值仍然是平方和的形式!

记此时的平方和为SSM/SSR(Sum of Squares Model/Regression) \[ SST - SSE = \sum\limits_{i = 1}^n {{{({y_i} - {\rm{\bar y}})}^2}} - \sum\limits_{i = 1}^n {{{({y_i} - {{\hat y}_i})}^2}} = \sum\limits_{i = 1}^n {{{({{\hat y}_i} - {\rm{\bar y}})}^2}} = SSM \] 可以看作当前预测\(\hat y_i\)与底线预测\(\bar y\)之间的差距,

因此我们有重要关系: \[ SST= SSE + SSM \] 事实上任何模型均可以看作是对SST的分解,当数据一定时,SST的值就是确定的, 但是,SSE在SST中占比越小,SSR在SST中占比越大,说明模型预测得越好(SSE越小,SSR越大,说明模型预测得越好)。

将SSR所占SST的比例理解为方差被解释的程度,记为R方 \[ {R^2} = \frac{{SSM}}{{SST}} = 1 - \frac{{SSE}}{{SST}} \] 但R方无法直接回答模型是否统计显著这个问题,因为堆砌参数会不断地增加R方(过拟合)

我们希望公平地比较SSE与SSM,因此我们引入平方和的平均值,

分别记为MSE(Mean Squared Error)和MSM(Mean Squared Mode1) \[ \begin{array}{c} MSE = SSE/(n - p)\\ MSM = SSE/({\rm{p - 1}}) \end{array} \] 其中p为模型参数的个数(包括截距项)。

称分母为各自的自由度(degree of freedom), 原因是SSE和SSM在零假设(模型无用)下服从自由度为n-p和p-1的卡方分布, 进而有两者的比值服从自由度为n-p和p-1的F分布 \[ {F_{{\rm{model}}}} = MSE/MSM \] 将上述所有内容汇总起来 记为方差分析表(ANOVA Table)

R语言中的实现

data(mtcars)
mod1 <- lm(mpg~wt, data=mtcars)
anova(mod1)
## Analysis of Variance Table
## 
## Response: mpg
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## wt         1 847.73  847.73  91.375 1.294e-10 ***
## Residuals 30 278.32    9.28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# p=1.294e-10<<0.01,因此模型是显著的

两个模型的比较

之前的ANOVA可以看作是将当前模型mod1和只保留截距项的最简单模型进行比较; 类似地可推广至比较全模型(Ful1 mode1)和简化模型(Reduced model)

\[ \begin{array}{r} {F_{{\rm{ModelCompare}}}} = \frac{{(SS{E_{reduced}} - SS{E_{full}})/(d{f_{full}} - d{f_{reduced}})}}{{MS{E_{full}}}}\\ = \frac{{(SS{M_{full}} - SS{M_{reduced}})/(d{f_{full}} - d{f_{reduced}})}}{{MS{E_{full}}}} \end{array} \]

# mod1 <- lm(mpg~wt, data=mtcars)
mod2 <- lm(mpg~wt+am, data=mtcars)
anova(mod1, mod2)  # 小的放第一个,大的放第二个
## Analysis of Variance Table
## 
## Model 1: mpg ~ wt
## Model 2: mpg ~ wt + am
##   Res.Df    RSS Df Sum of Sq     F Pr(>F)
## 1     30 278.32                          
## 2     29 278.32  1 0.0022403 2e-04 0.9879
# p=0.9879>0.05,因此在mod2并不比mod1好,即模型在已有wt的情况下,加入am对模型是没有帮助的,因此最终选择mod1。