SciTech-Mathmatics-Probability+Statistics-VIII-Statistics:Quantifing Uncertainty+ANOCOVA(ANalysis of COVAriance)協方差分析原理

abaelhe發表於2024-09-18

SciTech-Mathmatics-Probability+Statistics-VIII-Statistics:Quantifing Uncertainty

ANOCOVA(ANalysis Of COVAriance)

協方差分析原理

ANOCOVA 是一種將RA(迴歸分析) 與 VA(方差分析) 結合的一種分析方法。
用來比較不同Samples的Means(均值), 同時控制一個或多個協變數(即可能影響結果的連續變數)的影響.

多組資料的比較可以用VA(方差分析), 但是如果不同Samples的Baseline本來就不一致,
直接分析測試結果資料, 直接用VA(方差分析)可能存在問題。
這時候就需要使用ANOCOVA(協方差分析)。

協方差分析基本思想是:

  • 不易控制的因素因變數Y影響看作是協變數X,
  • 建立協變數X因變數YLR(線性迴歸)關係,
  • 利用該LR(線性迴歸)關係協變數X的值化為相等, 計算因變數Y的修正
  • 後對 因變數Y的修正均數 進行比較。

ANOCOVA 的例子:

  • 在研究不同教學方法對學生考試成績的影響時,
    學生的初始能力(比如之前的考試成績)也會影響最終成績。
    為公平地比較不同教學方法的效果,要去除培訓前成績差異的影響。
  • 研究物件分為兩組接受不同治療(如治療組和安慰組),
    每組分別在治療前後測量觀察指標(如血壓值),
    比較治療前後的血壓值時,需要去除不同研究物件本身血壓值就有差異的影響。

科學研究的ANOCOVA

來源:透過一個簡單例子,通俗講下協方差分析

臨床經常碰到這種設計:研究物件分為兩組, 接受不同治療(如治療組和安慰組),
每組分別在治療後前測量觀察指標(如血壓值). 目的是比較兩種治療方式是否有差異.
這種情況你會怎麼處理呢?

我看過不少國內的文章,他們的做法有這麼幾種:

  1. 直接比較治療後的兩組指標,如血壓值,用t檢驗比較;
  2. 先比較治療前兩組的差異,證明無統計學意義,然後再比較治療後兩組的差異;
  3. 先比較試驗組治療前和治療後差異, 再比較對照組治療前和治療後差異,
    如果試驗組治療後和治療前差異更大,說明試驗組更有效。

第 1. 種做法是肯定有問題的,因為它根本不考慮兩組在療前的差異。

  • 為什麼有問題呢? 比方說,下面這個簡單的例子:
    有甲乙丙3個學生,期末考試成績分別為90、85、80,
    如果讓你判斷,你覺得哪個學生更優秀一些(只考慮成績)?
    當然,你可以毫不猶豫地說,甲最優秀,因為成績最高。
  • 但確實如此嗎?再給你一組資料,
    甲乙丙3個人的剛入學時的成績,分別是95、85、60。
    這時候誰更優秀呢?你可能要猶豫一下。
    雖然甲的期末成績最高,但是相比入學成績而言,他是下降。
    丙的期末成績最低,可是相對入學成績而言,他上升了很多。
    作為老師,也許他不會評甲最優秀, 而是丙最優秀。因為成績上升很快。
    所以,很明顯,我們是不應該只看治療後兩組差異的,這說明不了什麼問題。

第 2. 種做法,比較好一些,起碼透過統計學方法說明兩組治療前無統計學差異。
但是,統計學差異有時未必可靠,跟例數有關的.
如果例數少的話, 即使兩組治療前差別較大, 也是無統計學差異。
所以,也不是很好。

第 3. 種做法,聽起來似乎也有理,但仔細想想。
試驗組的治療後前的差異比對照組的大, 是反映一種真實情況?還要統計學來證實的。
比如, 試驗組的血壓值治療後前對比,降低2mmHg,對照組降低1.8mmHg,
僅從數字來看, 試驗組降低更多, 但有意義?不一定。
比較兩組差異的正確做法, 真正說明兩組的差異,比較好的做法有兩種:

  1. 倍差法(因為做了兩次差值, 所以叫倍差法):
    兩組分別求出服藥後前的血壓值差值, 變成兩組差值的比較, 用t檢驗或方差分析.
  2. ANCOVA(協方差分析), 比較兩組治療後的血壓值, 但以服藥前血壓值作為協變數, 校正其影響.
    實際上是比較兩組校正的服藥後血壓值

第一種方法很簡單, 只是一種思路而已, 仍然是t檢驗或方差分析, 不必多言。
第二種方法是協方差分析,本文主要介紹一下:

協方差分析的思想

大概就是:
把治療前兩組的數值作為一個協變數, 比較兩組治療後差異時, 校正這一協變數。
這樣可以得到校正後的兩組治療後均值, 比較兩組的校正均值。
比如說,a和b兩組治療後均值分別為62和56,
但是校正協變數後, 很可能就變成了59和59,
這時比較兩個校正均值59和59,兩組就沒有統計學差異。

基本概念: 協變數、因變數、自變數

  • Dependent Variable(因變數)
    因變數是研究時被測量的結果或反應變數。
    比如研究教學方法對學生成績影響時,因變數是不同的研究教學方法。
  • Independent Variable(自變數)
    自變數是研究時被操縱或分類的變數,用於探討其對因變數的影響。
    比如研究教學方法對學生成績影響時,自變數是學生之後的成績。
  • Covariate(協變數)
    協變數是那些可能影響因變數的變數,但不是主要研究物件。
    透過控制這些變數, 可以更準確地評估自變數對因變數的影響。
    比如研究教學方法對學生成績影響時,協變數是學生之前的成績。

主效應 和 互動效應

  • 主效應
    自變數對因變數的直接影響, 不考慮協變數。
  • 互動效應
    自變數和協變數之間的互動作用對因變數的影響,
  • 要求
    1. 所關注的變數應該是連續的、正態分佈的,各組方差齊性。
      各組應該是獨立的(互不相關),
      並且應該有足夠的資料(每組有 5 個以上的值)。
    2. 因變數與協變數之間的迴歸關係必須是線性的。
    3. 自變數與因變數之間沒有互動作用。
      互動作用也可以認為代表斜率, 沒有顯著作用,說明斜率不存在顯著差異。只有當分類變數和連續變數之間沒有顯著的互動作用,才可以進行ANCOVA。​


協變數為x軸,以因變數為y軸
如果互動作用顯著,則會出現類似左圖和中圖情況。​​​

分析策略

  • 如果 只有組別變數顯著, 則放棄 協變數。 從模型刪除變數
    這時得到一個方差分析
  • 如果 只有協變數顯著, 則放棄 組別變數。 從模型提取一個變數
    這時得到一個簡單的LR(線性迴歸)結果.
  • 如果 互動作用顯著,即協變數因變數影響因組別的不同而不同.
    此時, 需要考慮互動作用對因變數的影響。可以對不同組別分別進行RA(迴歸分析),
    以更深入地瞭解協變數在不同組別的效應。

繪製三個Figure

  • ANOCOVA Prediction Plot:
    繪製三組協變數和因變數的相關性,並進行迴歸。
    可以簡單檢視協變數和因變數是否成線性相關關係,
    若不成立,則不能進行ANOCOVA分析
  • ANOCOVA Coefficients:
    展示三組迴歸的係數
  • ANOCOVA Test Results:
    展示自變數、協變數和自變數與協變數相互作用對因變數的影響,
    如果相互作用的p-value<0.05,則說明三組斜率顯著不一,
    則不能進行ANOCOVA分析
    ANOCOVA Test Results的結果其實等效於:
    線性迴歸模型 FinalScore ~ InitialScore * Method​

問題

  • 協方差分析為什麼要看協變數和組別的相互作用
    ANOCOVA假設 協變數 和 因變數 之間的關係在所有Samples(組別)是一致的。
    如果協變數在Samples(組別)之間存在顯著的相互作用,
    這表示協變數對因變數的影響在不同Samples(組別)之間是不一致的。
  • 如何理解 "ANOCOVA建立協變數X與因變數Y的LR(線性迴歸)關係,
    利用該回歸關係將協變數X的值化為相等,
    計算因變數Y的修正均值,
    再對因變數Y的修正均數進行比較。"
    這句話可以看下圖:

    ANOCOVA是 協變數為x軸,因變數為y軸,對Samples(各組)RA(迴歸分析),
    看Samples(各組)因變數隨著協變數的變化是否有顯著差異
    從上圖看到, 當Samples(各組)協變數透過迴歸都相等時, 各組因變數值的差異,
    從而計算顯著差異。
    ❓但是"說計算因變數Y的修正 的 均值", 我沒有搞懂是怎麼計算修正均值的?
    是直接LR(線性迴歸)模型套ANOVA就可以計算均值並計算顯著性?

    調整均數是對Samples(各組)求協變數的均值,然後得到一個總協變數均值,
    根據迴歸關係,得到各組的調整均值公式:
    \(\large \overset{-'}{y_{i}} = \overset{-}{y_i}− \beta_{yx(e)} (\overset{-}{x_i}−\overset{-}{x})\)
    ❓那麼是怎麼根據校正均值進行方差分析的?
    暫時不管了

參考

  • How to Perform an ANCOVA in Python - GeeksforGeeks
  • Chapter 6 Analysis of covariance (ANCOVA) | Workshop 4: Linear models (qcbs.ca)
  • ANCOVA using R and Python (with examples and code) (reneshbedre.com)
  • 第十章 協方差分析 - Thinkando
  • Analysis of Covariance - MATLAB & Simulink - MathWorks 中國
  • 透過一個簡單例子,通俗講下協方差分析 - 醫小咖的文章
  • Analysis of covariance - Wikipedia

相關文章