卡方檢驗的多組比較

2021-02-27 機智的統計生活

        類似於對連續型變量做方差分析(ANOVA),當對分類變量的頻數做RxC列聯表(R>2)的卡方檢驗時,如果p<0.05則拒絕零假設,認為至少有兩組頻數分布是有統計學差異的,下一步是確定哪兩組間有統計學差異。SAS在ANOVA中可以直接指定post hoc分析,但對於卡方檢驗,SAS沒有自帶程序可以直接處理,這期講一下有哪些比較實用的方法與代碼~

方法1:挨個做每兩組的卡方檢驗

        存在的問題是多重比較,會增大Type I Error,需要校正p值,比如用簡單但保守的Bonferroni method(假設有4組,則會做4*3/2=6次的兩兩比較,把p值*6,再跟0.05進行比較)。

        在查資料時,發現了一種將Tukey HSD和permutation相結合的方法,筆者介紹其統計學效能較高(連結:https://support.sas.com/resources/papers/proceedings14/1544-2014.pdf)。

        Tukey HSD方法是ANOVA中post hoc分析的一種方法,全稱是Tukey Honestly Significantly Difference,思想是利用q分布(studentarized range distribution)計算出HSD值,一個「可信的顯著差異」,當兩組均值差的絕對值大於HSD,可認為significant。

      由於卡方檢驗的'q分布'是未知的,所以採用permutation——置換,針對每次隨機置換原數據集而產生的新數據集做兩兩比較卡方檢驗,保留最大卡方值。重複上述過程很多很多次,如5000次來模擬組間無差異時的最大卡方值的分布。計算原組間卡方值在這個分布中右側的面積,即為近似的p值。

        資料中給出了兩個macro,第一個嵌套在第二個內,使用上述方法直接調用第二個macro即可。最後可以得到原始p value,bonferroni和Tukey校正後的p value。

       這裡想說的是第一個macro,%Pairwise_Chisq,即使不用上述方法,也可以利用這個宏來實現每兩組卡方檢驗的自動化。在使用這個宏前,需要對數據集進行調整。

        比如現有一數據集A,我們關注BMI和sport兩個分類變量,頻數分布如下(模擬數據):     

       將一人一行的原始數據集A轉換成頻數數據集_A,建議在_A中用具體分類代替數字分類,後面比較的結果可以直觀看出是哪兩組,而不是1 vs 2。然後運行macro:

proc freq data=A noprint;
table BMI*sport/out=_A;
run;
proc format;
value bmi 1='underweight' 2='normal' 3='overweight' 4='obesity';
value sport 1='light' 2='medium' 3='heavy' 4='violent';
run;
data _A;
    set _A(rename=(BMI=_BMI sport=_sport));
    length BMI sport $40.;
    BMI=put(_BMI,bmi.);
    sport=put(_sport,sport.);
run;

%pairwise_chisq(data=_A, group=bmi, outcome=sport, count=count);

        結果如下,針對這個結果,可以手動進行bonferroni校正或者用proc multtest校正最後一列的P_value。


方法2:構建poisson log-linear model

        poisson分布是針對頻數資料的常見分析方法,卡方檢驗的結果是可以通過構建Poisson對數線性模型的方法得到的。 比如對前面生成的頻數數據集_A,運行Proc genmod程序,這裡只關注主效應:

proc genmod data=_A;
    class bmi sport;
    model count=bmi sport/dist=poisson;
run;

        在擬合優度的結果中,Pearson卡方值與卡方檢驗中的卡方值一致,偏差與卡方檢驗中似然比卡方檢驗結果一致:        Proc freq卡方檢驗結果:

        做組間比較需要引入交互項bmi*sport,用lsmestimate語句進行聯合卡方檢驗(選項joint)。可以先用lsmeans語句查看交互項的順序,方便確認lsmestimate語句的係數排列,0不納入,兩個比較組的係數為1和-1,各係數和=0。

        比如第一個lsmestimate語句,normal組與obesity組運動頻率無差異,需要這兩組間heavy vs light, heavy vs medium,heavy vs violate無差異。故做聯合卡方檢驗,其餘同理。

proc genmod data=_A;
class bmi sport;
model count=bmi sport bmi*sport/ dist=poisson type3 wald;
lsmeans bmi*sport;
lsmestimate bmi*sport 'normal vs obesity' 1 -1 0 0 -1 1 0 0,
'normal vs obesity' 1 0 -1 0 -1 0 1 0,
'normal vs obesity' 1 0 0 -1 -1 0 0 1/joint(only);
lsmestimate bmi*sport 'normal vs overweight' 1 -1 0 0 0 0 0 0 -1 1 0 0,
           'normal vs overweight' 1 0 -1 0 0 0 0 0 -1 0 1 0,
                'normal vs overweight' 1 0 0 -1 0 0 0 0 -1 0 0 1/joint(only);
lsmestimate bmi*sport 'normal vs underweight' 1 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0,
                'normal vs underweigh' 1 0 -1 0 0 0 0 0 0 0 0 0 -1 0 1 0,
                      'normal vs underweigh' 1 0 0 -1 0 0 0 0 0 0 0 0 -1 0 0 1/joint(only);
lsmestimate bmi*sport 'obesity vs overweight' 0 0 0 0 1 -1 0 0 -1 1 0 0,
                'obesityl vs overweight' 0 0 0 0 1 0 -1 0 -1 0 1 0,
                'obesity vs overweight' 0 0 0 0 1 0 0 -1 -1 0 0 1/joint(only);
lsmestimate bmi*sport 'obesity vs underweight' 0 0 0 0 1 -1 0 0 0 0 0 0 -1 1 0 0,
        'obesity vs underweight' 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 1 0,
        'obesity vs underweight' 0 0 0 0 1 0 0 -1 0 0 0 0 -1 0 0 1/joint(only);
lsmestimate bmi*sport 'overweight vs underweight' 0 0 0 0 0 0 0 0 1 -1 0 0 -1 1 0 0,
                'overweight vs underweight' 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1 0,
                'overweight vs underweight' 0 0 0 0 0 0 0 0 1 0 0 -1 -1 0 0 1/joint(only);
run;

        給出的比較結果如下,可以對比這裡的卡方值,近似等於上面用%pairwise_chisq計算的兩組卡方檢驗值。

        使用這種方法,最後仍需校正p值,校正方法同上所述。

相關焦點

  • 基於SPSS軟體實現多組比較的卡方檢驗及兩兩比較
    再送兩個介紹多組間比較的統計分析:數值變量如果服從正態分布,採用均數±標準差進行統計描述,採用方差分析進行組間比較,如果組間差異有統計學意義,進一步採用LSD法(也可以是其它方法)進行兩兩比較。如果不服從正態分布,採用中位數(四分位數間距)進行統計描述,組間比較採用非參數檢驗(Kruskal-Wallis秩和檢驗),當組間總的有統計學差異,進一步採用Dunn法(也可以是其它方法)進行多重比較。
  • 卡方合併檢驗 vs 卡方分割檢驗
    我們用兩個問到的例子來分別介紹卡方合併檢驗和卡方分割檢驗的SPSS操作。
  • 卡方檢驗,T檢驗和F檢驗
    卡方檢驗、T-test、F檢驗區別卡方檢驗卡方檢驗是一種用途很廣的計數資料的假設檢驗方法。
  • 卡方檢驗、t檢驗和方差分析的區別
    獨立樣本T檢驗和單因素方差分析功能上基本一致,但是獨立樣本T檢驗只能比較兩組選項的差異,比如男性和女性。相對來講,獨立樣本T檢驗在實驗比較時使用頻率更高,尤其是生物、醫學相關領域。針對問卷研究,如果比較的類別為兩組,獨立樣本T檢驗和單因素方差分析均可實現,研究者自行選擇使用即可。3)卡方分析卡方檢驗用於分析定類數據與定類數據之間的關係情況。
  • 卡方檢驗和精確概率法及兩兩比較
    對於只會SPSS軟體的同學來說,做兩兩比較的卡方檢驗或精確概率法時,需要一次次選擇個案,一次次點菜單,太浪費時間和精力。用R軟體的優勢在於做兩兩比較時,不用再一次一次點菜單了,直接用幾行命令就可以了。我們想看看不同工作崗位的男女比例是否有差異。
  • 卡方檢驗在實際工作中的應用
    同時,圖片被分為高低CTR兩組,也屬於分類變量。既然是對兩個分類變量(設計因素、高低CTR)做相關分析,卡方檢驗很適用於此案例。卡方檢驗怎麼做?思路是什麼?,在<單元格>對話框中勾選<z-檢驗>下方倆選項以便進行多變量間的兩兩比較。
  • 卡方檢驗的多種應用場景總結
    T檢驗是比較兩組定量數據均值之間是否存在顯著差異的方法。如果是定類數據之間的差異性,比較均值顯然不合理,而用數字出現的頻數或比例進行比較,就可以不考慮數值本身的信息,直接比較出類別變量之間的關係情況。這類分析方法就被稱為卡方檢驗。本文將從概念、方法分類、每個方法的使用場景及案例分析對卡方檢驗進行介紹。
  • 卡方檢驗多種用途總結
    概念卡方檢驗是一種用途廣泛的分析定類數據差異性的方法,主要用於比較定類與定類數據的關係情況,以及分析實際數據的比例與預期比例是否一致。02.方法分類與T檢驗一樣,卡方檢驗可對包括單個樣本、兩獨立樣本、兩配對樣本等進行統計檢驗,具體方法分類如下:
  • SPSS 統計分析策略(11):兩組率比較的統計方法​(卡方和Fisher法)
    無序分類結局又包括二分類結局和多分類結局。本文的內容是二分類結局的分析。二分類結局往往以率的形式開展描述,因此統計分析探討的是率有無差異。吲達帕胺片治療原發性高血壓療效,將患者隨機分為兩組。試驗組用吲達帕胺片加輔助治療,對照組用安慰劑加輔助治療。試分析兩組率有無統計學差異?
  • 卡方檢驗適用條件及R*C交叉表 - CDA數據分析師
    >以上n代表總的樣本量,如果是四格表卡方檢驗,就是兩組人群之和,如下圖,常用的符號了解一下:上述表格也稱」四格表「明白了卡方檢驗的適用條件,我們來看看什麼是R*C交叉表檢驗,以前的教材也叫R*C列聯表。
  • SPSS卡方檢驗操作步驟、結果解讀
    8、先看到的第一個表格就是交叉表,性別為行、選擇的讀物為列  9、卡方檢驗結果:主要看pearson卡方檢驗,sig值小於0.05,因此認為不同的性別的人對周末讀物的選擇有顯著的差別  10、最後一個表格
  • 1151期-3:【統計】卡方檢驗詳細講解
    1四格表資料的卡方檢驗用於進行兩個率或兩個構成比的比較應用條件:要求樣本含量應大於40且每個格子中的理論頻數不應小於5。而多個率的兩兩比較可採用行×列表分割的辦法SPSS操作步驟:操作與四格表操作一致3、列聯表資料的卡方檢驗同一組對象,觀察每一個個體對兩種分類方法的表現,結果構成雙向交叉排列的統計表就是列聯表。
  • 卡方檢驗的理解
    卡方檢驗的理論知識卡方檢驗定義:卡方檢驗是假設檢驗的一種方法
  • 全流程總結卡方檢驗,幫你理清分析思路
    卡方分析卡方檢驗是研究數據比率上的差異性,用於比較定類與定類數據的關係情況。1. 數據類型卡方檢驗要求X、Y項均為定類數據,即數字大小代表分類。如果X是定類數據,Y是定量數據,且X組別多於2組,則應該使用方差分析。如果X是定類數據,Y是定量數據,且X組別僅為兩組,則應該使用T檢驗。
  • 搞定統計學必知:P值、T檢驗、卡方檢驗、假設檢驗……
    計算P值有效的解決了這個問題,P值其實就是按照抽樣分布計算的一個概率值,這個值是根據檢驗統計量計算出來的。通過直接比較P值與給定的顯著性水平α的大小就可以知道是否拒絕假設,顯然這就代替了比較檢驗統計量的值與臨界值的大小的方法。
  • R語言檢驗獨立性:卡方檢驗(Chi-square test)
    在這篇文章中,我將展示如何計算列聯表,我將在列聯表中引入兩個流行的測試:卡方檢驗和Fisher精確檢驗。什麼是列聯表?列聯表提供關於兩個分類變量的測量的整數計數。最簡單的列聯表是一個2 × 22×2 頻率表,由兩個變量產生,每個變量有兩個級別:組/觀察觀察1觀察2第1組ñ1 ,1ñ1,1ñ1 ,2ñ1,2第2組ñ2 ,1ñ2,1ñ2 ,2ñ2,2給定這樣一個表格,問題是第1組是否表現出與第2組相比的觀測頻率。這些組代表因變量,因為它們依賴於自變量的觀察。
  • SPSSAU教程:全流程總結卡方檢驗,幫你理清分析思路
    如果X是定類數據,Y是定量數據,且X組別僅為兩組,則應該使用T檢驗。2. 研究目的一般使用卡方檢驗進行分析的目的都是比較差異性。如現狀調查類問卷,以及一般調查問卷中,常使用卡方檢驗對樣本背景信息題(性別、年齡等指標)與核心題項進行交叉分析,來說明樣本背景這類指標對核心變量是否存在影響。除了上述研究場景外,卡方檢驗還可用於研究配對數據的差異性,比如對同一組患者用兩種方法診斷癌症,看兩種方法的診斷結果是否有差異,則要使用配對卡方檢驗。
  • 別錯過,卡方檢驗實用總結
    除此之外,卡方檢驗(準確說是卡方擬合優度檢驗)還可以檢驗定類數據的分布特徵是否與預期保持一致。比如本來預計男性和女性的比例各佔一半(50%),但收集回來的數據卻是45%和55%,那麼收集回來的數據是否就明顯的偏差預期(50%)呢?此時也可以使用卡方檢驗。
  • 別錯過,卡方檢驗實用總結!
    通常情況下,卡方檢驗是研究分類數據與分類數據之間關係的分析方法,如性別和是否戴隱形眼鏡之間的關係。卡方檢驗通常會涉及卡方值和P值兩個名詞術語。卡方值與P值有對應關係,P值小於0.05則說明有差異存在,即性別與是否戴隱形眼鏡之間有聯繫。
  • 管理心理學之統計(24)獨立性的卡方檢驗
    卡方也可以被用於檢驗兩個變量間是否存在關係。這種情況下,樣本中的每個個體被歸入兩個不同的變量,通常用矩陣表示。行與一個變量類別相對應,列與另一個變量類別相對應。矩陣的每個單元中的數字表示特定組的頻數。觀察頻數與期望頻數獨立性卡方檢驗使用與擬合度檢驗一樣的基本邏輯。樣本分布頻數被稱為觀察頻數f0。期望頻數fe的計算公式為:其中fc是列總和,fr是行總和。期望頻數的具體計算如下表:3.