淺談影像數據中的ANOVA和Post-hoc test

2021-02-21 天津市功能影像重點實驗室

讀這篇小文章之前,思考幾個小問題:

 

1. 你是否遇到過ANOVA有顯著差異,然而兩兩的Post-hoc檢驗卻找不到任何顯著差異?

 

2. 你是否考慮過ANOVA如果沒有顯著差異,兩兩的Post-hoc檢驗會不會找到顯著差異?

 

3. 你可曾想過如果是多組數據,為什麼要一定先做ANOVA,再做兩兩的Post-hoc檢驗呢?能不能直接做兩兩的t檢驗呢?

 

近日,筆者對這幾個問題進行了小小的研究。研究這些問題的起因是注意到靜息態分析軟體DPABI進行了一些更新,將事後檢驗放到了統計分析模塊中。

 

影像領域做ANOVA+Post hoc傳統方法:1. 先ANOVA,F圖校正得到顯著區域,在顯著區域內部做基於voxel-by-voxel的post-hoc兩兩t檢驗(map圖);2. 先ANOVA,F圖校正得到顯著區域,將顯著區域的每個cluster內所有組的值提取出來,做post-hoc兩兩t檢驗(bar圖);(注意:post-hoc t-test需要做多重比較校正(Across groups),通常使用Bonferroni校正)。實際上,總的來說,做兩次校正:1. across voxels; 2. across groups。

 

實際上,DPABI軟體調用matlab中的multcompare程序進行事後檢驗,共包括以下5種方法:Tukey-Kramer (honestly significant difference), lsd, Bonferroni, Dunn-Sidak and Scheffe。DPABI的做法是先做across groups的事後檢驗,再做across voxels的多重比較。

 

通過DPABI輸出的圖像可以看出,這種做法並沒有用我們傳統的先對F圖(ANOVA生成)進行校正,然後在校正後的mask中做多重比較。既然這樣,為什麼DPABI還要生成一個F圖呢?或者說matlab的multcompare函數為什麼要藉助於之前anova1的輸出參數stats呢?事實上,醫學統計學或者心理學統計書上的post-hoc檢驗使用的是所有組的組內均方(MS誤差,而得到F值的過程也必然會計算出MS誤差。

 

那麼,這麼多種post-hoc方法(SPSS軟體中更是給出了太多的方法,比multcompare要多得多),我們到底該用哪一種方法做事後檢驗呢?能不能根據哪個結果顯著就用哪個呢?這種做法是必然不可取的,其實不同的post-hoc方法有它自己的適用性。這些方法有強有弱,lsd就是一種比較弱的方法,它需要根據研究目的或專業知識考慮,在設計階段決定不做全面的多重比較,比如只想比較疾病常見類型之間的療效差別。倘若在在研究設計中未考慮均數多重比較問題,如探索性研究,經方差分析結論有統計學意義之後,才決定對各個均數做兩兩事後比較,可採用SNK-q、Bonferroni 和Sidak檢驗。

 

說到這裡,有讀者可能會問所有教材基本都會提到的SNK等方法為什麼multcompare沒有給出?經筆者分析答案可能有兩個:1. 有的post-hoc方法無法對應到一個已知的分布,從而給出精確的p值;2. Matlab給出的是相對常用的方法。

 

在下面ppt中,筆者用數值仿真做了模擬,同時分析了方差分析F檢驗顯著,但事後兩兩比較都不顯著的可能原因:

1.      方差分析中,整體上的差異檢驗所採用的方法和事後兩兩比較所採用的方法是不同的,從而導致事後比較無差異。

2.      事後兩兩比較中,可以選用的比較方法很多,可以試著換其他方法,或許就能發現顯著性差異的兩組。

3.      整體上的檢驗,其樣本量、組數、統計量等都和事後兩兩比較不同,因此導致整體上有差異而具體組間無差異。

4.      可能存在統計效應力的問題,整體上的檢驗其效應力可能和組間兩兩比較的效應力有出入,導致本該組間有差異,但是還沒有達到顯著性的程度。

5.      一般來講,這種情況只會在p值為邊緣顯著(~0.05)時出現。

 

問題:既然t檢驗可以給出比方差分析更具體、更深入的結果,對於多組均數比較是否可以直接t檢驗+多重比較?對於這一問題已經有很多討論,大致有以下三種主要觀點:

1.      過去很長一段時間的主流看法,主張對多組(>=3組)均數比較時,首先應進行方差分析,若統計量F值有顯著意義,再選用多重比較方法。

2.      來自美國心理學會統計方法小組APATask Force On Statistical Reference在1999年題為《StatisticalMethods in Psychology Journals: Guidelines and Explanations》研究報告中的評論,建議研究者明確自身的研究目的----到底是只需要討論多組均值存在不同即可?還是需要具體明確哪些均值不同?

3.      認為在統計軟體與計算機技術非常發達、方便的今天,已無必要先進行方差分析再進行多重比較,直接進行多重比較獲得更具體的均值不等信息即可。

 

更加詳細的內容,請參考下面的ppt。本期內容只是個人的一些思考,歡迎大家一起探討這個問題。明晚組會有更多精彩哦^_^

 

主要參考文獻:

顏虹 徐勇勇 醫學統計學 第3版 人民衛生出版社

張厚粲 徐建平 現代心理與教育統計學 第3版 北京師範大學出版社

方積乾 生物醫學研究的統計方法 高等教育出版社

方積乾 孫振球 衛生統計學第6版 人民衛生出版社

孫振球 徐勇勇 醫學統計學第3版 人民衛生出版社

王凌峰 統計學 電子工業出版社

DPABI:Data Processing & Analysis for (Resting-State) Brain Imaging, neuroinfomatics, 2016, in press.

PPT



相關焦點

  • 技能輸出 | post-hoc分析到底怎麼個「事後」法?
    比如說我花了很多錢做了個RCT驗證xx藥的安全性和有效性,由於藥物和適應症的特殊性,期間呢對於納入的樣本人群一直在進行營養幹預。過了一頓時間,我忽然發現是否可以利用這個RCT的數據研究一下營養幹預對於患者預後的影響呢?那麼這樣的研究就叫做post-hoc 分析(事後分析)。
  • R語言中的t-test和ANOVA
    方差分析(analysis ofvariance,簡寫為ANOVA)是生產和科學研究中分析試驗數據的一種有效的統計方法
  • R繪圖應用實例:單因素方差分析ANOVA及繪圖
    ANOVA原理參考:單因素方差分析(One-way Anova)實驗數據:在隨機劃分的試驗田中,施加三種複合肥(B,C,D),飼料填充物做空白對照(A),一段時間後,測定試驗田內植株高度,比較數據有無不同,差異性是否具有統計學意義。
  • 基於R語言實現多組獨立樣本的非參數檢驗(Kruskal-Wallis秩和檢驗)及兩兩比較
    軟體操作1、導入數據使用read.delim命令讀取剪貼板上的數據,str命令查看數據的樣本量和變量數及每個變量的類型,head命令查看數據集的前6行。2、分類變量因子化使用factor命令把sex、bmig、work和disease因子化,並添加值標籤,使用str命令查看數據類型,使用head命令
  • 一團糟的數據做方差分析,幸好還有Wilcox的robust ANOVA(R統計專用)
    hw<-read.csv("hw.csv", header = TRUE)  # 讀入數據文件。建議把Excel和SPSS另存為csv或dat。Andy Field書中的tsplit函數和bwtrim完全等價。
  • 使用Django 項目中的 ORM 編寫偽造測試數據腳本
    依據慣例,我們博客項目中腳本的目錄結構如下:HelloDjango-blog-tutorial\ blog\ blogproject\ ... scripts\ __init__.py fake.py md.sample其中 fake.py 是生成測試數據的腳本,md.sample 是一個純文本文件,內容是用於測試 Markdown 的文本。
  • 數據造假新手段「P值黑客」
    如今,在科學研究中,出現了比學術欺詐更令人擔憂發指的行為——P值黑客(P-hacking)。P值黑客是指如果研究人員採用的分析方法可疑,那麼他們應當有一個不成比例的P值數據結果等於或接近p<0.05這個統計學意義閥值,而這也相對很容易被發現。
  • 乾貨丨Python接口測試自動化實戰及代碼示例:含get、post等方法
    這裡我僅對requests 模塊中的 get 請求方法做了封裝,其它方法(如 post,put,delete 等)的封裝類似。當讓你也可以不用封裝,直接使用 requests.methodName 來直接調用該方法。這裡提醒一句,在實際的接口測試中,headers 和 data 都是有值的,要確保這些值的填寫正確,大部分請求下的請求失敗或返回結果錯誤,基本上都是由於這些值的缺失或錯誤造成的。
  • R+SQL Server的大數據管理
    雖然「大數據」的概念很寬泛,是對規模龐大的數據對象,及其處理和應用活動的統一,但我們今天就淺談一下它的「大」。大數據的「大」,一般是指在10TB規模左右大型數據集,但在實際應用中,很多用戶把多個數據集放在一起,已經形成了PB級的數據量;例如,百度的首頁導航每天需要提供的數據超過1.5PB,這些數據如果列印出來將超過5千億張A4紙。
  • 常用數據分析方法:方差分析及實現!
    )', df).fit())anova_res.columns = ['自由度', '平方和', '均方', 'F值', 'P值']anova_res.index = ['因素A', '誤差']anova_res # 這種情況下看p值 >0.05 所以接受H0結果如下:
  • 開源三維地球Cesium中如何離線加載衛星影像和高程DEM數據
    概述前段時間,給大家介紹了基於《水經注地圖發布服務中間件4.0》離線發布全球衛星影像的方法,以及如何在內網離線發布全國高程DEM數據並在OsgEarth中調用的方法,今天再為大家分享開源三維地球Cesium如何離線加載衛星影像和高程DEM數據的方法!
  • 衛星影像識別技術在高德數據建設中的探索與實踐
    導讀對於地圖服務而言,地圖數據的準確率和覆蓋率是服務質量的關鍵因素,而地圖數據的更新,依賴於多種信息源,如軌跡熱力,實採圖像,衛星影像等。近年來,由於遙感衛星數量的增多及高解析度光譜相機的出現,以及衛星影像圖自身覆蓋廣、視角好、信息豐富的特點,衛星影像作為地圖數據更新的信息源起到了越來越重要的作用。
  • 還在擔心衛星遙感影像數據下載的問題麼?誠心奉獻Sentinel哨兵數據高速下載方法(適用於其它衛星數據下載)
    -2)等眾多衛星影像數據直接進行雲上處理獲取感興趣區域結果。在第二部分介紹如何通過通過配置aria2下載工具下載查詢到的Sentinel-2影像數據,重點介紹python守護進程用於監控和管理aria2工具的重啟。第三部分,介紹如何通過python程序更新Aria2的Sentinel-2數據下載清單。最後,一部分是題外話部分,不感興趣可以不看。
  • Postdischarge thrombosis and hemorrhage in patients with ...
    These data highlight the importance of a data-driven risk-benefit ratio assessment for postdischarge extended thromboprophylaxis.
  • 在JavaScript中,使用replace()、test()和exec()方法匹配字符串
    05第五節:test()方法test()方法是在正則表達式上使用的,是一個用於測試字符串是否被匹配上的布爾結果。如果匹配上,則test()的結果是true,否則為false。下面我們舉例說明一下test()方法具體是如何使用的,JS代碼如下:<script>var x = /a/g.test("123a890a77777a");console.log(x);</script>運行一下結果,打開Google Chrome瀏覽器的控制臺,查看一下結果:圖4從運行結果上看,test(
  • Z-Test vs T-Test vs F-Test vs χ2-Test
    檢驗的區別正態分布和學生分布都是描述均值為主, 而F和卡方分布主要描述方差為主。因此對應到檢驗, Z-Test和T-Test也是以均值位置為主的檢驗, 而F-Test和χ2-Test是以方差為主的檢驗。
  • 重症醫學科SCI論文發表及臨床科研策略大數據分析
    (重症醫學科研究論文的增長趨勢)我們對其中最新發表的10,997篇論文進行大數據分析。根據重症醫學科領域2020年發文3.8萬篇的總量,下面針對重症醫學科的全球數據大都是今年最近3個月論文分析結果。國家分布可以看到,美國發表論文數最多,佔33%;中國發表的研究論文數量為1,877篇,佔19%,排在第二位。義大利、德國和法國分列第三到五位。