Chi-square test with R Example

Data: WOW_data


1.適合度考驗 (Goodness of fit test)

  某一個變項是否與某個理論分配或母群分配相符合;考驗的內容僅涉及一個變項,是一種單因子考驗。研究者想瞭解在WOW_data這筆資料上,男女比例是否有不同。

用R讀取剛剛的CSV檔,並將此資料命名為 chi_1

chi_1   <- read.csv("D:/104/ML_R/WOW_data.csv",header=TRUE,sep=",")

先將要分析的變項〝性別〞(gender)利用table()形成次數分配表;之後再將結果存成count(別忘了變項性別要轉換成factor !!)

chi_1$gender <-as.factor(chi_1$gender)
count<-table(chi_1$gender)
count
## 
##   0   1 
##  89 104

進行卡方分析,利用chisq.test(要比較的資料)

chisq.test(count)
## 
##  Chi-squared test for given probabilities
## 
## data:  count
## X-squared = 1.1658, df = 1, p-value = 0.2803
分析結果與解釋: 
卡方檢定結果顯示在WOW_data這筆資料中男女生的
比例並無顯著差異(χ^2 =1.17, p = .28)。


2.獨立性考驗: (Goodness of fit test)

試分析WOW_data資料中,性別(gender)的分佈和三個種族(ethnic)之間是否有關聯?
H0: 性別與種族之間無關聯
H1: 性別與種族之間具有關聯

用R讀取剛剛的CSV檔,並將此資料命名為 chi_2

chi_2   <- read.csv("D:/104/ML_R/WOW_data.csv", header=TRUE,sep=",")

先將要分析的變項性別(gender)和種族(ethnic)利用table()形成次數分配表;之後再將結果存成count(別忘了變項性別和種族要轉換成factor !!)

chi_2$gender <-as.factor(chi_2$gender)
chi_2$ethnic <-as.factor(chi_2$ethnic)
cross_table <- table(chi_2$gender,chi_2$ethnic)
cross_table
##    
##     Human  Orc  Undead 
##   0     38   19      32
##   1     49   23      32

利用summary( ),進行獨立性考驗

summary(cross_table)
## Number of cases in table: 193 
## Number of factors: 2 
## Test for independence of all factors:
##  Chisq = 0.6096, df = 2, p-value = 0.7373
分析結果與解釋:   
卡方檢定結果顯示性別與種族之間並無統計上顯著關係( χ^2 
(2)=0.61, p = .74),所以此兩變項之間相互獨立。


3.相依樣本的卡方考驗(2 by 2 contingency table)

McNemar test: 稱為非獨立樣本的卡方檢定,重點在於實驗過程中,觀察結果從負到正與從正到負的次數(或是比例)變化是否相等(也就是是否不同)。試分析WOW_data資料中一年級閱讀成績(reading_1)與三年級閱讀成績(reading_3)是否有明顯的改變。
 H0: 學生在一年級與三年級時的閱讀成績並沒有不同。
 H1: 學生在一年級與三年級時的閱讀成績有顯著不同。
 

用R讀取剛剛的CSV檔,並將此資料命名為 chi_3

chi_3   <- read.csv("D:/104/ML_R/WOW_data.csv",header=TRUE,sep=",")

進行相依樣本卡方檢定前需要對閱讀成績重新定義,先利用summary看看一年級與五年級時的閱讀成績均值為何。

summary(chi_3[c(12,22)])
##    reading_3       reading_1    
##  Min.   :423.0   Min.   :393.0  
##  1st Qu.:489.0   1st Qu.:467.0  
##  Median :503.0   Median :481.0  
##  Mean   :499.3   Mean   :477.3  
##  3rd Qu.:512.0   3rd Qu.:489.0  
##  Max.   :543.0   Max.   :530.0

載入套件並利用mutate()和ifelse()將三年與五年級時的閱讀成績均值做為分界點,以上是高分組(1);以下則是低分組(0),並將新變項結果存到chi_3裡,結果如下圖:

library(dplyr)
chi_3<-mutate(chi_3, reding5 = ifelse(reading_3 >= 499.3, "1", "0"))
chi_3<-mutate(chi_3, reding3 = ifelse(reading_1 >= 477.3, "1", "0"))



將這兩個變項利用table()形成次數分配表;並存成MC_test

MC_test <-table(chi_3$reding3,chi_3$reding5)
MC_test
##    
##      0  1
##   0 66 11
##   1 22 94

利用 mcnemar.test( ),計算卡方值

mcnemar.test(MC_test)
## 
##  McNemar's Chi-squared test with continuity correction
## 
## data:  MC_test
## McNemar's chi-squared = 3.0303, df = 1, p-value = 0.08172
分析結果與解釋: 
如報表所示,McNemar檢定的卡方值為3.03,p值為.08,所以學生在ㄧ年級與三年級時的閱讀成績並無明顯差異。由列聯表可知,情況不變的有     66+94=160(160/193=.829=82.9%);有11名學生在ㄧ年級時的閱讀成績在低分組,但在三年級時變為高分組(5.6%),另外有22名學生則情況相反     (11.39%)。結果顯示,大部分學生在閱讀成績上並不會因為兩年的就學時間就有明顯差異。


date: “2016年1月18日,第一版”

author: “邱浩恩”