本文非原創
對于計量資料,臨床醫學研究中常用的統計分析方法是t檢驗;而對于計數資料,卡方檢驗是一個常用的統計分析方法。
最近看到一篇文章,里面分析了骨巨細胞瘤患者術后復發的比例,其中計數資料使用卡方檢驗(又稱χ2檢驗),下面針對卡方檢驗的使用方法及其R語言實現方法進行簡單介紹。
概念
卡方檢驗是一種用途很廣的計數資料的假設檢驗方法,由卡爾·皮爾遜提出。它屬于非參數檢驗的范疇,主要是比較兩個及兩個以上樣本率( 構成比)以及兩個分類變量的關聯性分析。其根本思想就是在于比較理論頻數和實際頻數的吻合程度或擬合優度問題。
它在分類資料統計推斷中的應用,包括:兩個率或兩個構成比比較的卡方檢驗;多個率或多個構成比比較的卡方檢驗以及分類資料的相關分析等。
可以分為成組比較(不配對資料)和個別比較(配對,或同一對象兩種處理的比較)兩類。
通常卡方檢驗的應用主要為:
1、 卡方擬合優度檢驗
2、卡方獨立性檢驗
例一
我們想知道喝牛奶對感冒發病率有沒有影響,以下為數據統計的四格表:
通過簡單的統計我們得出喝牛奶組和不喝牛奶組的感冒率為30.94%和25.00%,兩者的差別可能是抽樣誤差導致,也有可能是牛奶對感冒率真的有影響。
為了確定真實原因,我們先假設喝牛奶對感冒發病率是沒有影響的,即喝牛奶喝感冒時獨立無關的,所以我們可以得出感冒的發病率實際是(43+28)/(43+28+96+84)= 28.29%
所以,理論的四格表應該如下表所示:
即下表:
如果喝牛奶喝感冒真的是獨立無關的,那么四格表里的理論值和實際值差別應該會很小。
那如何來描述這種差別呢,我們定義卡方值為
其中,A為實際值,T為理論值。
x2用于衡量實際值與理論值的差異程度(也就是卡方檢驗的核心思想),包含了以下兩個信息:
- 實際值與理論值偏差的絕對大?。ㄓ捎谄椒降拇嬖冢町愂潜环糯蟮模?/li>
- 差異程度與理論值的相對大小
根據卡方檢驗公式我們可以得出例1的卡方值為:
卡方 = (43 - 39.3231)平方 / 39.3231 + (28 - 31.6848)平方 / 31.6848 + (96 - 99.6769)平方 / 99.6769 + (84 - 80.3152)平方 / 80.3152 = 1.077
卡方值(理論值與實際值差異大小)的意義是什么呢?為此我們再引入一個概念:
卡方分布的臨界值
上一步我們得到了卡方的值,但是如何通過卡方的值來判斷喝牛奶和感冒是否真的是獨立無關的?也就是說,怎么知道無關性假設是否可靠?
答案是,通過查詢卡方分布的臨界值表。
第一行表示顯著性水平α
第一列表示自由度
這里需要用到一個自由度的概念,自由度等于V = (行數 - 1) * (列數 - 1),對四格表,自由度V = 1。
對V = 1,喝牛奶和感冒(95%概率)不相關的卡方分布的臨界值(最大)是:3.84。即如果卡方大于3.84,則認為喝牛奶和感冒(有95%的概率)相關。
臨界值3.84的意義表示:如果卡方值>3.84,則縱列因素與橫行因素不相關的的概念<0.05(即顯著性水平),也即縱列因素與橫行因素相關的概念>0.95。
顯然1.077<3.84,沒有達到卡方分布的臨界值,所以喝牛奶和感冒獨立不相關的假設沒有被推翻。
簡單說,如果我們計算出的卡方值(表示實際值與理論值的差異,越大表示實際值與理論值越不符,即越有可能縱列因素會影響橫行數值)大于臨界值(列因素不影響橫行值的范圍:0~臨界值),我們就排斥原假設(H0,即縱列因素不影響橫行的因素的變化),接受備擇假設(H1:縱列因素對橫行的因素變化有影響);反之,卡方值小于臨界值,即在(縱列與橫行互不影響這一假設)理論范圍內,無法推翻原假設,即無統計差異。
第二個例子:四格卡方檢驗的標準做法
我們想知道不吃晚飯對體重下降有沒有影響,并獲得以下數據:
- 建立假設檢驗:
H0:r1=r2,不吃晚飯對體重下降沒有影響,即吃不吃晚飯的體重下降率相等;
H1:r1≠r2,不吃晚飯對體重下降有顯著影響,即吃不吃晚飯的體重下降率不相等。α=0.05
【H0為縱列因素對橫行因素無影響;H1為有影響】
-
計算理論值
表6:吃晚飯與體重的關系-理論值計算,方法參考表2
3.計算卡方值
根據圖1所示公式,計算出卡方值為5.498
- 查卡方表求P值
在查表之前應知本題自由度。按卡方檢驗的自由度v=(行數-1)×(列數-1),則該題的自由度v=(2-1)(2-1)=1,查卡方界值表,找到3.84,而本題卡方=5.498即卡方>3.84,P<0.05,差異有顯著統計學意義,按顯著性水平α=0.05水準,拒絕H0,可以認為兩組的體重下降率有明顯差別。
通過實例計算,對卡方的基本公式有如下理解:若各理論數與相應實際數相差越小,卡方值越??;如兩者相同,則卡方值必為零。
卡方檢驗的修正
x2值表是數理統計根據正態分布的定義計算出來的。 是一種近似,在自由度大于1、理論數皆大于5時,這種近似很好;當自由度為1時,尤其當1<T<5,而n>40時,應用以下校正公式:
如果觀察資料的T<1或n<40時,四格表資料用上述校正法也不行,可參考預防醫學專業用的醫學統計學教材中的精確檢驗法【Fisher檢驗?】直接計算概率以作判斷。
1.一般認為行×列表中不宜有1/5以上格子的理論數小于5,或有小于1的理論數。當理論數太小可采取下列方法處理:①增加樣本含量以增大理論數;②刪去上述理論數太小的行和列;③將太小理論數所在行或列與性質相近的鄰行鄰列中的實際數合并,使重新計算的理論數增大。由于后兩法可能會損失信息,損害樣本的隨機性,不同的合并方式有可能影響推斷結論,故不宜作常規方法。另外,不能把不同性質的實際數合并,如研究血型時,不能把不同的血型資料合并。
2.如檢驗結果拒絕檢驗假設,只能認為各總體率或總體構成比之間總的來說有差別,但不能說明它們彼此之間都有差別,或某兩者間有差別。
1.n ≥40,T ≥ 5. 用Pearsonc2統計量(非連續性校正)
2.當n≥40時,如果某個格子出現1≤T ≤5,則需作連續性校正【瑞麟:即R語言中chisq.test函數的參數correct=TRUE】。
3.n<40,或任何格子出現T<1,或檢驗所得的P值接近于檢驗水準a,采用Fisher確切概率檢驗。
——引自文獻【6】
卡方檢驗試用條件【文獻8】
1.隨機樣本數據;
2.卡方檢驗的理論頻數不能太小.
兩個獨立樣本比較可以分以下3種情況:
1.所有的理論數T≥5并且總樣本量n≥40,用Pearson卡方進行檢驗.
2.如果理論數T<5但T≥1,并且n≥40,用連續性校正的卡方進行檢驗.
3.如果有理論數T<1或n<40,則用Fisher’s檢驗.
上述是適用于四格表.
R×C表卡方檢驗應用條件:
1.R×C表中理論數小于5的格子不能超過1/5;
2.不能有小于1的理論數.
若不符合R×C表的卡方檢驗.可以通過增加樣本數、列合并來實現.
如何使用R語言進行卡方檢驗
R語言自帶卡方檢測的方法,只要調用方法chisq.test(),會自行輸出X-squared卡方值, df自由度, p-value概率。
判斷5種品牌啤酒的愛好者有無顯著差異:
P值越大,支持原假設的證據就越強,給定顯著性水平α(取0.05), 當P值小于α時,就拒絕原假設。
R語言做卡方試驗的修正[文獻5]
H0:兩種藥物療效相同
H1:有效率不等
為何會提示算法可能不準確呢?計算理論值:
因此,此處的統計檢驗應使用修正的卡方檢驗或Fisher精確檢驗。
文獻1中的數據列表為
文章提及計數資料使用χ2檢驗,而數據列表中多處數據小于5,顯然應該視理論值大小選擇連續性修正的卡方檢驗或Fisher檢驗更合適一些。
原文作者:云中瑞麟
鏈接:http://www.lxweimin.com/p/bb0bd72bc428