Thursday, April 2, 2020

Multi Factor Multi Level ANOVA 概念入門

簡介
普遍來講,一個實驗會涉及非常多不同的變數。例如:想提升溶液的溶解度,我們可以選擇不同溶液、不同温度、不同攪拌速度、不同容器等等。又例如:想提升機器學習的效能,我們可以選擇不同神經網絡、不同深度、不同參數等。當中,我們希望找出最關鍵的變數,以達至用最低的成本,提供最高的效果。這個就是 2-way / 3-Way / N-Way ANOVA 的目標。

與 One-Way ANOVA (Single Factor ANOVA) 相似之處,N-Way ANOVA 的出發點,同樣是找出 μ1, μ2 ... μN 是否一致。不過,因為 ANOVA 能找出每個因子的重要性 (significance of each factors),所以它常被用作找出關鍵因子 (key factors) 的方法。

條件
所有假設條件與 One-Way ANOVA 一樣,除了可以有多個不同因子。

界定準則
與 One-Way ANOVA 一樣,它一樣能找出「這個因子 跟 實驗誤差 之間,到底有多大差距」。而且,由於 N-Way ANOVA 涉及多種變數,它也會找出「兩個(或以上)因子結合」的結果,繼而可以發現出不同因子之間千絲萬縷的關係。

用溶液溶解度的例子來講,我們不但可以找出「温度上升」、「攪拌速度上升」、「使用 B 溶液」可以提高溶解度,更能找到「温度上升+攪拌速度上升」、「使用 C 溶液+低温」、「使用 A 溶液+温度上升+攪拌速度上升」等的不同組合帶來的互動效果 (interaction effect)。對於找出奇怪的組合,十分有幫助。(例如用雞蛋汁做溶液的話,低温效果更好,所以高温並不一定能提升溶解度)

公式
以下只列出 Two-Way ANOVA 的公式,因為 N-Way ANOVA 涉及的公式太多,而且只是 Two-Way ANOVA 的延伸,更何況可交給電腦處理,所以就在此處省略掉。

假設數據的確會因為因子改變而改變,我們就可以用以下公式 (effect model) 表達其關係,當中 y 是指單一實驗結果,μ 是指總平均 (global mean),τ 是指因子 A 變化產生的影響,β 是指因子 B 變化產生的影響,ε 則指各數據與總平均之間的誤差:
由此可見,若果因子 A 變化的確會影響實驗結果的話,τ 的數值一定需要十分明顯,甚至必須比 ε 大得多,β 及 (τβ) 亦同理。從以上觀察,我們可以推算下面的公式:
以溶液實驗作為例子,假設 A 因子為溶液温度 (3 levels, 25°C / 50°C / 70°C),B 因子為攪拌速度 (2 levels, 10 rpm / 20 rpm),每個實驗重覆 4 次 (n = 4 replicates)。
  • SSA (Sum of Square of Factor A) 指:
    溶液在 25 度的平均,減去總平均,再次方,加上
    溶液在 50 度的平均,減去總平均,再次方,加上
    溶液在 70 度的平均,減去總平均,再次方,
    然後除以 4 得到「溶液在三種不同温度的平均方差」,
    再除 b (2) 得到「溶液在三種不同温度,面對兩種攪拌速度的平均方差」。
  • SSB (Sum of Square of Factor B) 指:
    溶液在 10 rpm  速度的平均,減去總平均,再次方,加上
    溶液在 20 rpm  速度的平均,減去總平均,再次方,
    然後除以 4 得到「溶液在兩種不同攪拌速度的平均方差」,
    再除 a (2) 得到「溶液在兩種不同温度,面對三種温度的平均方差」。
  • SSAB (Sum of Square of Factor AB) 指:
    10 rpm  + 25°C 的平均,減去 25°C 的總平均,再減去 10 rpm 的總平均,再加總平均,再次方,如此類推,目標得出「溶液在固定温度與攪拌速度下的平均方差」。
系統化的公式表列示如下:

界定準則與判定
跟 One-Way 檢測一樣,我們同樣使用 Significance Level (α) 及 F-distribution 來判斷。

補充資料:使用 F-distribution 的原因,主要是因為兩個 Chi-Square Distribution 相除的結果,而 SS 因為是二次方,所以是 t-Distribution 的二次方,也就是 Chi-Square Distribution。而使用 t-Distribution 的原因,是因為數據中的 variance 是估計而得。這段不明白也不重要,只需知道如何使用公式表或電腦運算即可。


使用電腦運算 
使用圖形化的 SPSS 可參考:https://statistics.laerd.com/spss-tutorials/two-way-anova-using-spss-statistics.php
使用 MATLAB 可參考:https://www.mathworks.com/help/stats/anova2.html

小結
N-Way ANOVA 對於 Factor Screening 特別有用,因為可以從多個因子中選擇較重要的因子,並將不必要的因子除掉,令日後的實驗步驟得以簡化。同時,選取重要因子,可以幫助我們以更少的成本,提升系統整體效能。當然,有時候,即使該因子的統計重要性 (statistical significance) 再高,我們也要考慮現實的重要性 (practical significance)。換句話說,有時候知道結果,也未必可以減低成本(例如提升温度代表需要更多電力)。這個時候,我們就需要更深入的 cost optimization 和 opportunity cost calculation,才能做出正確決定。

Single Factor Multi-Level ANOVA 概念入門

簡介
在日常生活中,我們經常比較不同數據的差異。可是,由於 T 檢定只支援兩組數據的比較,若果想使用 T 檢定去比較多於兩種數據,就需要進行多次比較,比較費事失事。

例如:我們想比較年青人、中年人、老年人的心肺功能。我們採集了三組數據 (Teen, Adult, Elderly) 之後,如果用 T 檢定,我們需要同時檢定:Teen VS Adult,Teen VS Elderly 和 Adult VS Elderly 共三次比較,才能得出 μTeen = μAdult = μElderly 的結論。當處理多種數據時,這種情況將會更加嚴重,比較次數將會更多。

所以,統計學者們發明了 ANOVA (Analysis of Variance) 來解決比較多組數據的問題。

條件
ANOVA 假設所有數據均為常態分布 (normally distributed),而且每組數據均為獨立事件 (independent events)。另外,為確保實驗不會受時間等偏差影響,每組實驗的次序都需要隨機運作 (randomized sequence)。

還有,一般來說,因子應該是類別數據 (categorical variable)(例如年齡群),而依變數 (dependent variable) 應該是連續數據 (continuous variable)(例如血糖指數)。試想想:如果依變數是類別數據的話,ANOVA 的公式就用不上了:因為根本沒有數字可以代進去呢!

界定準則
ANOVA 在於找出「這個因子 跟 實驗誤差 之間,到底有多大差距」。舉一個例子:一個人懂得多少種語言,與他的身高並沒有任何關係。所以,當你收集了有關語言數與身高的數據,經過計算,你會發現該因子組內的變異 (sum of square),跟實驗誤差 (experimental error) 沒有太大差別(也就是說,幾組數據都長得差不多,並沒有明顯的差別)。ANOVA 正正運用這個特性,來判斷不同數據之間,會否受因子的改變而產生變化。如果不同數據,確實因為因子的改變而產生了變化,我們就能肯定,幾組數據的平均值存在差異(也就是說,由 μ1, μ2 ... 至 μN 之中,至少有一個或多個數值並不相等)。

公式
假設數據的確會因為因子改變而改變,我們就可以用以下公式 (effect model) 表達其關係,當中 y 是指單一實驗結果,μ 是指總平均 (global mean),τ 是指因子變化產生的影響,ε 則指各數據與總平均之間的誤差:
由此可見,若果因子變化的確會影響實驗結果的話,τ 的數值一定需要十分明顯,甚至必須比 ε 大得多。從以上觀察,我們可以推算下面的公式。

下圖中, Treatment 表示因子 (Factor) 的不同數值,N 是總 sample 數量,n 是 每組的 replicates 次數(或 sample count),a 是因子組數目。以心肺功能例子來講,假設有三組人(青年、中年、老年),而每組有 15 個人的話,N = 15*3 = 45,a = 3, n = 15,當中 N-a 可移項變成 a(n-1)。

Sum of Square between treatments (SST) 是指以下項目的總和:
  • 15 個青年人的血糖數據的平均,減去全部人的平均血糖數據,次方,再除以 15,
    得到類似「青年人平均的變異量 (Sum of square of teenagers) τ Teen」
  • 15 個中年人的血糖數據的平均,減去全部人的平均血糖數據,次方,再除以 15,
    得到類似「中年人平均的變異量 (Sum of square of adults) τ Adult」
  • 15 個老年人的血糖數據的平均,減去全部人的平均血糖數據,次方,再除以 15,
    得到類似「老年人平均的變異量 (Sum of square of elderly) τ Total」 
Sum of Square of Experimental Error (SSE) 是指以下項目的總和:
  • 每一個人的血糖數據,減去全部人平均血糖數據,次方,得到類似 ε。
只要我們比較一下 τ 和 ε 的比例差別,就能判斷因子的變化,是否真的影響數據結果。
但比較之前,我們必須先將 SS 換算成 MS,將所有數據變成同一個單位。

界定準則與判定
跟 T 檢測一樣,我們同樣使用 Significance Level (α) 來判斷。

H0 (Null Hypothesis) =  μ1 = μ2 = ...= μN
Ha (Alternative Hypothesis) = 有一個或以上的 μi 不相等。
不過今次只有 one-sided test,因為 ANOVA 只能判斷 μ1, μ2 ... 之間有一個或多個不相等。

經過計算後,如果 p-Value 比 F_α, a-1, N-a 小的話,Null Hypothesis 則不成立。
(又或者說,F0 > F_α, a-1, N-a 的話,Null Hypothesis 則不成立)
(可理解成「 Null Hypothesis 真實的可能性太低,或者我錯誤否定它的可能性太低」)

使用電腦運算
使用圖形化的 SPSS 可參考:https://www.yongxi-stat.com/one-way-anova-indenpedent/
(註:當中的 Tukey / Fisher's LSD 是 Post ANOVA 方法,用來找出那一個  μi 與眾不同)

使用 MATLAB 可參考: https://www.mathworks.com/help/stats/one-way-anova.html

小結
Single Factor Multi-Level ANOVA (One-Way ANOVA) 能有效找出當一個因子的數值改變時,產生的數據是否仍然一致。對於 Performance Tweaking 等情況,這種方法特別有用。另外,如果需要加入多種因子,研究多種 factor 及其 interaction effect 的話,可使用延伸版的 Two Way ANOVA。