卡方分配(chi-square distribution)是統計學常用的一種機率分佈,可應用於類別資料分析。

在實際應用中,最常見的有三種方法:獨立性檢定、同質性檢定、適配度檢定。

本篇文章主要介紹卡方獨立性檢定 – R語言的操作,細節如下所述。

# 補充1:卡方獨立性檢定相關內容(SPSS)

https://www.yongxi-stat.com/chi-squared-test-of-independence/

 

# 補充2:「卡方獨立性檢定」跟「卡方同質性檢定」的方法是一樣的,然而兩個切入的角度完全不一樣。

兩者的差別是「卡方獨立性檢定」主要探討的是「資料關聯性」,而「卡方同質性檢定」探討的則是「各類別比例是否相同」

 

一、分析目的

當觀察值具有兩種特徵時,使用二因數列聯表(two factor contingency table),進而檢定兩因數是否相關,二因數列聯表習慣採用r列與c行,又稱為rxc表。

 

二、卡方獨立性檢定的計算方式

(1) 假設檢定

虛無假設(Null hypothesis)→ H0:A屬性與B屬性無關。

對立假設(alternative hypothesis)→ H1:A屬性與B屬性有關。

(2) 顯著水準 α

(4) 計算檢定統計量:

(5) 結論:當X2 ∈(屬於) C時,則拒絕H0;否則,接受H0

 

三、R語言操作範例

(一) 範例介紹

對於鬼滅之刃這部動畫,學生的喜歡程度,經訪問600名學生得資料如下表:

試取顯著水準 α = 0.05,以檢定學生分類與喜歡程度是否獨立?

(1) 假設檢定

虛無假設→ H0:學生分類與喜歡程度彼此獨立。

對立假設→ H1:學生分類與喜歡程度彼此間不為獨立。

(2) 顯著水準 α = 0.05

 

(二) 資料匯入

Carton<-read.csv(“Cartons-1.csv”,header=T)

# read.csv ():將資料匯入到指定的變數,也就是Carton

View(Carton)

# View():瀏覽資料內容

=>根據執行結果:在資料集中共有3個變數和6個觀察資料,3個變數分別為:

學生分類(ID):1小學生、2中學生、3大學生;喜歡程度(like):1喜歡、2不喜歡;票數(Votes)

(三) 統計描述

  1. 資料整理

data<-data.matrix(Carton$Votes)  #取Votes資料轉矩陣格式

rname<-c(“Smallstudents”,”Middlestudent”,”Bigstudent”) #行名稱

cname<-c(“Notlike”,”Like”) #列名稱

compare<-matrix(data,nrow=3,ncol=2,dimnames=list(rname,cname)) #資料整理並編輯為矩陣格式

compare  #查看數據

=>根據執行結果:列出了卡方檢驗所需要的資料格式,並存儲在「compare」資料框中

  1. 統計描述

## 計算學生分類與喜歡程度的比例##

S1<-prop.table(compare, margin = 1)  #計算行百分比

S1  #顯示行百分比

=>根據執行結果:喜歡鬼滅之刃的比例分別為:小學生0.57%、中學生0.53%、大學生0.51%

(四) 統計推斷

##卡方檢驗##

S2<-chisq.test(compare,correct = FALSE)  #不進行連續性校正

S2$expected  #查看期望次數

=>根據執行結果:可知表格內的期望次數均>5。

 

# 補充:在卡方檢定中,一般要求期望次數不得小於1,並且不得有20%以上細格的期望次數小於5。

不然則建議合併相鄰的行或列,或採用連續性校正Yate’ s correct test,亦或採用Fisher’ s Exact Test。

 

S2  #查看卡方檢驗結果

=>根據執行結果:顯示卡方統計量、自由度和P值,可知學生分類與喜歡程度是無顯著的差異(X2=1.6803,P>0.05)。

##計算Cramer V係數##

由於獨立性假設只能檢定兩個變數是否相關,無法知道關聯性的強度與方向,因此當檢定結果為顯著相關時,便會依據不同的資料型態 (例如:不同大小的列聯表)選擇不同的係數來計算變數之間關聯性的強度與方向:

  1. ϕ係數 (phi coefficient):僅適用於2 x 2的列聯表
  2. 列聯係數 (coefficient of contingency):適用於大於2 x 2方陣的列聯表,如3 x 3、4 x 4、5 x 5
  3. Cramer’ s V係數:可用於非方陣列聯表,如2 x 3、3 x 2、2 x 4、3 x 4 …

 

install.packages(“vcd”)  #安裝套件:vcd

library(vcd)  #載入套件:vcd

assocstats(compare)  #計算Cramer V係數

=>根據執行結果:表示學生分類與喜歡程度為弱相關(Cramer’s V(Cramer’s係數)= 0.053)。

 

#事後檢驗(兩兩比較)

到目前為止,卡方檢驗檢出組間差異後,得到的結果只能顯示行變量與列變量間是否相互獨立,但各變量的不同組別間具體存在何種差異呢?這需要後續通過兩兩比較來得到更爲精確的結論。因此可以通過X2分割法進行兩兩比較,即將三組比例的比較拆分成多個兩組比例的比較;同時校正顯著水準α’=α/m,其中m=k(k-1)/2,k為分組數。本案例為3個分組,拆分成3個兩組比例的比較;取α=0.05,則α’=0.05/3=0.017。

 

##指定資料子集##

mydata1<-subset(Carton, ID!=3)  #資料子集(小學生和中學生)

mydata2<-subset(Carton, ID!=2)  #資料子集(小學生和大學生)

mydata3<-subset(Carton, ID!=1)  #資料子集(中學生和大學生)

 

##兩兩比較##

install.packages(“jmv”)  #安裝套件:jmv

library(jmv)  #載入套件:jmv

 

#計算小學生和中學生的關聯係數

contTables(formula = Votes ~ ID:like, data = mydata1, contCoef=TRUE, phiCra=TRUE)

=>根據執行結果:顯示P值為0.3913952>0.017,可知小學生和中學生喜歡的比例是無顯著的差異

另外在關聯係數φ部分為0.044,表示關聯強度較弱

 

#計算小學生和大學生的關聯係數

contTables(formula = Votes ~ ID:like, data = mydata2, contCoef=TRUE, phiCra=TRUE)

=>根據執行結果:顯示P值為0.3631205>0.017,可知小學生和大學生喜歡的比例是無顯著的差異

另外在關聯係數φ部分為0.046,表示關聯強度較弱

 

#計算中學生和大學生的關聯係數

contTables(formula = Votes ~ ID:like, data = mydata3, contCoef=TRUE, phiCra=TRUE)

=>根據執行結果:顯示P值為0.9599440>0.017,可知中學生和大學生喜歡的比例是無顯著的差異

另外在關聯係數φ部分為0.002,表示關聯強度較弱

 

四、結論

本研究採用卡方獨立性檢定對學生分類與喜歡程度彼此是否獨立進行比較,結果顯示小學生喜歡的程度約57%、中學生喜歡的程度約53%、大學生喜歡的程度約51%,學生分類與喜歡程度是無顯著的差異(X2=1.6803,P>0.1),表明學生分類與喜歡程度彼此獨立,也就是接受H0拒絕H1;學生分類與喜歡程度則為弱相關(Contingency coefficient =0.053,Cramer’s V=0.053)。

另外採用X2分割法,按照α’=0.017的顯著水準進行兩兩比較,發現:
小學生和中學生喜歡的程度是無顯著的差異(P=0.3913952),
小學生和大學生喜歡的程度是無顯著的差異(P=0.3631205),
中學生和大學生喜歡的程度是無顯著的差異(P=0.9599440);

在關聯數φ分別為0.044、0.046、0.002,表示關聯強度較為薄弱