[轉]使用R語言進行卡方檢驗(chi-square test)

本文非原創
對于計量資料,臨床醫學研究中常用的統計分析方法是t檢驗;而對于計數資料,卡方檢驗是一個常用的統計分析方法。

最近看到一篇文章,里面分析了骨巨細胞瘤患者術后復發的比例,其中計數資料使用卡方檢驗(又稱χ2檢驗),下面針對卡方檢驗的使用方法及其R語言實現方法進行簡單介紹。


概念

卡方檢驗是一種用途很廣的計數資料的假設檢驗方法,由卡爾·皮爾遜提出。它屬于非參數檢驗的范疇,主要是比較兩個及兩個以上樣本率( 構成比)以及兩個分類變量的關聯性分析。其根本思想就是在于比較理論頻數和實際頻數的吻合程度或擬合優度問題。

它在分類資料統計推斷中的應用,包括:兩個率或兩個構成比比較的卡方檢驗;多個率或多個構成比比較的卡方檢驗以及分類資料的相關分析等。

可以分為成組比較(不配對資料)和個別比較(配對,或同一對象兩種處理的比較)兩類。

通常卡方檢驗的應用主要為:
1、 卡方擬合優度檢驗
2、卡方獨立性檢驗

例一

我們想知道喝牛奶對感冒發病率有沒有影響,以下為數據統計的四格表:

表1 喝牛奶與感冒的相關性

通過簡單的統計我們得出喝牛奶組和不喝牛奶組的感冒率為30.94%和25.00%,兩者的差別可能是抽樣誤差導致,也有可能是牛奶對感冒率真的有影響。

為了確定真實原因,我們先假設喝牛奶對感冒發病率是沒有影響的,即喝牛奶喝感冒時獨立無關的,所以我們可以得出感冒的發病率實際是(43+28)/(43+28+96+84)= 28.29%

所以,理論的四格表應該如下表所示:

表2 喝牛奶與感冒的相關性

即下表:

表3 喝牛奶與感冒的相關性

如果喝牛奶喝感冒真的是獨立無關的,那么四格表里的理論值和實際值差別應該會很小。

那如何來描述這種差別呢,我們定義卡方值為

圖1 卡方值計算公式

其中,A為實際值,T為理論值。

x2用于衡量實際值與理論值的差異程度(也就是卡方檢驗的核心思想),包含了以下兩個信息:

  1. 實際值與理論值偏差的絕對大?。ㄓ捎谄椒降拇嬖冢町愂潜环糯蟮模?/li>
  2. 差異程度與理論值的相對大小

根據卡方檢驗公式我們可以得出例1的卡方值為:

卡方 = (43 - 39.3231)平方 / 39.3231 + (28 - 31.6848)平方 / 31.6848 + (96 - 99.6769)平方 / 99.6769 + (84 - 80.3152)平方 / 80.3152 = 1.077

卡方值(理論值與實際值差異大小)的意義是什么呢?為此我們再引入一個概念:

卡方分布的臨界值

上一步我們得到了卡方的值,但是如何通過卡方的值來判斷喝牛奶和感冒是否真的是獨立無關的?也就是說,怎么知道無關性假設是否可靠?

答案是,通過查詢卡方分布的臨界值表。

表4 卡方分布的臨界值表

第一行表示顯著性水平α
第一列表示自由度

這里需要用到一個自由度的概念,自由度等于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:縱列因素對橫行的因素變化有影響);反之,卡方值小于臨界值,即在(縱列與橫行互不影響這一假設)理論范圍內,無法推翻原假設,即無統計差異。

第二個例子:四格卡方檢驗的標準做法

我們想知道不吃晚飯對體重下降有沒有影響,并獲得以下數據:

表5:吃晚飯與體重的關系
  1. 建立假設檢驗:

H0:r1=r2,不吃晚飯對體重下降沒有影響,即吃不吃晚飯的體重下降率相等;
H1:r1≠r2,不吃晚飯對體重下降有顯著影響,即吃不吃晚飯的體重下降率不相等。α=0.05

【H0為縱列因素對橫行因素無影響;H1為有影響】

  1. 計算理論值

    表6:吃晚飯與體重的關系-理論值計算,方法參考表2

3.計算卡方值
根據圖1所示公式,計算出卡方值為5.498

  1. 查卡方表求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時,應用以下校正公式:

圖2 卡方值計算方法的修正

如果觀察資料的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概率。

表7 啤酒品牌與愛好者數量的差異

判斷5種品牌啤酒的愛好者有無顯著差異:

圖3 在R語言中進行統計分析

P值越大,支持原假設的證據就越強,給定顯著性水平α(取0.05), 當P值小于α時,就拒絕原假設。

圖4 R語言中chisq函數的使用格式

R語言做卡方試驗的修正[文獻5]

表8 不同藥物治療有效性比較

H0:兩種藥物療效相同
H1:有效率不等

圖5 R語言中使用卡方檢驗

為何會提示算法可能不準確呢?計算理論值:

圖6 R語言計算理論值:有小于5的數值出現

因此,此處的統計檢驗應使用修正的卡方檢驗或Fisher精確檢驗。

圖7 R語言中使用Fisher檢驗對上述數據進行統計分析

文獻1中的數據列表為

表9 骨巨細胞瘤患者術后復發的比較

文章提及計數資料使用χ2檢驗,而數據列表中多處數據小于5,顯然應該視理論值大小選擇連續性修正的卡方檢驗或Fisher檢驗更合適一些。

原文作者:云中瑞麟
鏈接:http://www.lxweimin.com/p/bb0bd72bc428

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容

  • 文|程瑞林(山東大學第二醫院足踝外科)來源|(微信公眾號)云中瑞麟(ID:ruilinfly) 瑞麟導讀:對于計量...
    云中瑞麟閱讀 146,069評論 10 69
  • 白話“卡方檢驗” 什么是“卡方檢驗”? 卡方檢驗是假設檢驗的一種,用于分析兩個類別變量的相關關系,是一種非參數假設...
    李威威閱讀 11,773評論 2 49
  • 知識點 卡方分布(Chi-square distribution) 四格表資料的卡方檢驗 配對四格表的卡方檢驗 四...
    x2yline閱讀 22,011評論 0 17
  • 交叉分類(列聯表)和卡方檢驗 交叉分類問題 比較和對照是進行科學研究的基本手段。對于間距測度和比例測度的資料,進行...
    雨一流閱讀 18,922評論 0 4
  • 從前禮敬老人是傳統,愛護幼小是素養,謙讓他人是文明,日行一善是良心。現如今,尊老但看到有些老人不自重,愛幼...
    須張聲勢閱讀 366評論 1 7