1. 程式人生 > 其它 >卡方檢驗檢驗水準矯正_R語言入門之獨立性檢驗

卡方檢驗檢驗水準矯正_R語言入門之獨立性檢驗

技術標籤:卡方檢驗檢驗水準矯正

獨立性檢驗

1. 卡方檢驗

對於2維的頻率表,我們可以使用R語言的卡方檢驗函式chisq.test(x)來進行獨立性檢驗,用以判斷行變數和列變數之間是否相關。其實獨立性檢驗本身就是用來判斷變數之間相關性的方法,如果兩個變數彼此獨立,那麼兩者統計上就是不相關的。

需要注意的是卡方檢驗要求列聯表中每格的數值或者期望值大於5,如果該條件不滿足,那麼R中就會使用Yate's矯正公式進行計算。

A <- c(rep("male",15),rep("female",20),rep("male",15))# 建立變數A
B <- c(rep("healthy",4),rep("sick",35),rep("healthy",11)) # 建立變數B
C <- c(rep("smoker",26), rep("nonsmoker",24)) # 建立變數C
mydata <- data.frame(A,B,C) # 利用以建立的變數構建資料框
mytable <- table(A,C) #生成二維頻數表
chisq.test(mytable) #卡方檢驗判斷A和B的相關性

Pearson's Chi-squared test with Yates' continuity correction

data: mytable

X-squared = 0.0033387, df = 1, p-value = 0.9539

在這裡,卡方檢驗的假設檢驗是:

(1) 零假設(H0):吸菸和性別不相關(實際分佈和理論分佈一致)。

(2) 備擇假設(H1):吸菸和性別相關(實際分佈和理論分佈不一致)。

(3) 檢驗水準:alpha=0.05

以alpha=0.05的檢驗水準來看,由於p-value > 0.05,所以在這裡吸菸行為和性別無關。

在這裡,P值是用卡方分佈計算出來的,我們也可以是用蒙特卡洛(Monte Carlo)演算法來計算p值,只要加上引數simulate.p.value = FALSE,在這裡就不詳細介紹了,有興趣的朋友可以自己去了解了解。

2. 費希爾精確檢驗(Fisher Exact Test)

費希爾精確檢驗是一個基於超幾何分佈的檢驗變數間獨立性的方法,在R語言中可以直接使用fisher.test(x)函式來進行計算,這裡x通常就是一個二維的列聯表。

fisher.test(mytable) 

519c4b46c0908ae7b6807023813a52e5.png

在R中輸出的結果有p值、備擇假設、95%置信區間、OR值,從結果來看p-value>0.05, 說明吸菸和性別不相關,這個結論和卡方檢驗的結果一致。

3. Mantel-Haenszel檢驗

Mantel-Haenszel檢驗又稱為Cochrane-Mantel-Haenszel(CMH)檢驗,它主要針對的是分層資料,它的零假設是兩個分類變數在調整組間差異後是彼此獨立的,他們之間是沒有其它的互動作用。在R語言中我們可以通過mantelhaen.test(x)

函式來實現,這裡x通常是一個三維資料表。

mytable <- table(C, B, A) #將性別作為調整的因素

4cb39fc30478f2a5450d53bc6516ee24.png
mantelhaen.test(mytable) #進行CMH檢驗,判斷在矯正性別後,吸菸和健康之間是否有關

45f2bf6b7381779e19bded9c071a5b22.png

從上面的結果可以看出,以alpha=0.05為檢驗水準時,p-value < 0.05說明在矯正性別之後吸菸和健康有關,同時依據OR值大於1可以說明吸菸是健康的危險因素。CMH檢驗還在Meta分析中有著巨大的作用,在後續的內容中我會詳細講解。