前言:筆者在網上找資料時感覺網路上對於ANOVA解釋大多都僅僅停留在如何計算F-statistic,或者如何用R, SAS, Python實現ANOVA,卻鮮有對ANOVA解釋。寫這篇文章就是希望能給ANOVA一個通俗的解釋,讓即便是非數學,非統計出身的同學們也能直觀的理解他。

本文將主要講單因素方差分析(one-way ANOVA),以後再慢慢講多因素和其他。

首先來說說我們為什麼要用ANOVA。在做一些實驗時,我們通常會把樣本分成不同的組,給予不同的對待。例如,我們想研究某種藥物在不同劑量下對人們的作用。我們可能會將病人隨機分為同等大小的三組,A組每天吃一片,B組每天吃兩片,C組每天吃三片。因為我們只研究這個藥品計量對病人的影響,所以是單因素分析,如果想要加入別的因素,例如,年齡,就需要用到多因素分析了。在上述實驗中,我們給了三種不同的計量,所以這個藥物計量因素下有三個水平(level)。實驗結束以後,你老闆問你,這三組病人的表現有顯著的區別嗎?這個時候,你就可以使用ANOVA來回答你老闆的問題啦。

雖然ANOVA叫做方差分析,但是他的目的是檢驗每個組的平均數是否相同(敲黑板!)。也就是說,ANOVA的零假設(null hypothesis)是 H_0: mu_A = mu_B = mu_C 。現在,我們換一個角度考慮這個問題,如果這三組病人的表現並沒有顯著的區別,那他們其實是同一個總體的三次隨機抽樣。反過來說,我們想要分析,是不是有一組病人他們的表現非常與眾不同,讓這組病人不是來自同一個總體。

在具體說如何理解ANOVA之前,我們先來說ANOVA有哪些假設。如果你的實驗不能滿足ANOVA的假設,那你需要考慮別的分析方法或者改變實驗設計。ANOVA有主要有以下3個假設:

  1. 方差的同質性(homogeneity of variance)。可以理解為每組樣本背後的總體(也叫族群)都有相同的方差;
  2. 族群遵循正態分布;
  3. 每一次抽樣都是獨立的。在我們的例子中,每一個病人只能提供一個數據。對於一些實驗一個樣本需要提供多個數據,有其他相應的ANOVA分析方法。

假設我們得到的結果是這樣的:

現在,我們終於可以來看方差分析。ANOVA中有兩個重要概念:組間方差(mean squared between, MSB),相當於每個族群相對於總體的方差;組內方差(mean squared error, MSE),也就是每個分布自身的方差。下圖是這兩個概念的一個圖像化的理解:

有了一個直觀的理解以後,我們可以開始說如何計算這兩個變數。簡單來說,MSE是每組方差的平均值。假設我們的數據是這樣:

從圖中可以看出,MSE來自各組方差的平均數。所以, MSE = frac{sigma^2_A+sigma^2_B+sigma^2_C}{k}=frac{1.5+1.3+0.8}{3}=1.2

同樣,看圖發現,MSB來自各組平均值的方差。前面說過,如果這三組數據並無顯著差別,我們可以將這個實驗理解為從同一總體中,隨機抽取三組樣本。MSB就是總體的方差估計。我們知道,抽樣分布的平均值方差是總體方差除以樣本大小,即 sigma^2_{mu}=frac{sigma^2}{n} 。假設,A,B,C都有34人,

mu = frac{mu_A+mu_B+mu_C}{k}=1.667, sigma^2_{mu} =0.023

MSB=sigma^2=nsigma^2_{mu}=34	imes0.023=0.782

最後我們需要做的,就是對比組間方差(MSB)和組內方差(MSE)。最簡單的對比方法就是把他們相除,也就是我們常說的F-statistics,即 F=frac{MSB}{MSE}

我們來思考一下,這樣的對比會有哪些結果:

第一種,MSB大,MSE小, F=frac{old{MSB}}{MSE} 較大。這個情況說明,至少有一個分布相對其他分布較遠,且每個分布都非常集中,即每個分布方差較小。所以,我們不能得出三個分布都有相同的均值,於是拒絕 H_0 。一個極端的例子和一個更極端的例子:

第二種,MSB小,MSE大, F=frac{MSB}{old{MSE}} 較小。這個情況有兩種可能,當然也可以是這兩種可能的混合。一是每組的平均值都相對集中,二是每組的方差很大,導致我們無法把每組分開。所以我們無法拒絕零假設。兩個極端的例子:

第三種,MSB approx MSE, F=frac{MSB}{MSE} 較小。這個時候MSB和MSE比較balance,可能是每組的平均值很集中,且每組方差很小;或者每組的方差較大,平均值也都離的不太遠。總之,我們無法很好的剝離出某一組的分布。所以,我們同樣無法拒絕零假設。以下是兩個普通的例子:

以上是對ANOVA的一個總體的理解。接下來說說具體說說如何通過F-statistics來計算P值,從而量化我們的決定。

我們知道,F分布有兩個重要的參數: d_1d_2 ,分別代表分子的自由度和分母的自由度。一般來說,樣本方差估計的自由度是 N-1 。在ANOVA中,我們已經知道分子是組間方差,在上述例子中我們有3組數據,所以分子的自由度為2。分母是組內方差,因為每組都有34位病人,分母的自由度為 3	imes(34-1)=99 。現在我們有了所有的數據,大家只需通過查表就可以確定p值了。

d_{numerator}  = k-1=2, d_{denominator} = k(n-1)=N-k=99

F=frac{MSB}{MSE}=0.65, p=0.52

很明顯,由於p值很大,所以我們無法拒絕零假設,也就是說ANOVA的結果告訴我們三組平均值相同。

看到這裡,想必大家也明白了,ANOVA就是把方差拆成兩個部分進行對比。為什麼要拆成這兩部分呢?在我們的實驗中,導致每個病人數據不同的原因主要有兩方面:1. 我們給病人不同的藥物劑量;2. 病人本身不同,比如年輕的病人代謝速度快,有些病人對這個藥物比較敏感,等等。第一種不同,我們稱之為組間變數,第二種稱為組內變數。我們主要關心的是組間變數,病人個體的不同或者其他隨機因素導致結果不同我們統統稱之為誤差。

在ANOVA中,組間變數我們稱之為 SS_{treatments} ,組內變數為 SS_{error} 。兩者之和為總變數,SS_{total} = SS_{treatments}+SS_{error} 。同樣的道理,我們也可以將自由度分為兩個部分,即 DF_{total}=DF_{treatments}+DF_{error}

我們知道,計算樣本方差的公式為:

s^2=frac{sum(x_i-ar{x})^2}{n-1}

這個式子的分子是一個平方和(sum of squares, ss),分母則是自由度(degree of freedom, df),這兩個值相除的結果也可以稱為平方和均值(mean square, ms)。

所以,F也可以看作組間的變化比組內的變化:

F=frac{組間變化}{組內變化}=frac{SS_{treatments}/DF_{treatments}}{SS_{error}/DF_{error}}=frac{MSB}{MSE}

這也解釋了為什麼,MSB是來自每組平均值的方差,而MSE是來自每組方差的平均值。

寫在最後:在看資料的過程中,我發現統計學教授們太喜歡給同一個東西不同的名字,本文出現的標記都是我在學習的時候習慣用的。不過萬變不離其宗,只要能理解方差分析的原理和邏輯,各種變數叫什麼名字都可以。


Reference:

Photographer,Allen Versfeld. (30 Apr, 2013).Stellar Remnant. Retrieved from urban-astronomer.com/as

One-Factor ANOVA (Between Subjects). Retrieved from onlinestatbook.com/2/an

Analysis of variance. (2019, February 04). Retrieved from en.wikipedia.org/wiki/A

推薦閱讀:

相关文章