Chi Square Test

Chi Square test atau bisa disebut dengan uji Khi Kuadrat merupakan salah satu metode statistik non parameterik untuk menentukan apakah dua variabel nominal atau ordinal (kategorik) memiliki korelasi yang signifikan di antara keduanya. Uji khi kuadarat ini dikenal pula sebagai uji kebaikan pengepasan (goodness of fit test).Untuk melihat materi selengkapnya bisa dilihat pada laman databee.id

Chi Square test dengan data iris

dat <- iris
dat$size <- ifelse(dat$Sepal.Length < median(dat$Sepal.Length),
  "small", "big")
table(dat$Species, dat$size)
##             
##              big small
##   setosa       1    49
##   versicolor  29    21
##   virginica   47     3
test <- chisq.test(table(dat$Species, dat$size))
test
## 
##  Pearson's Chi-squared test
## 
## data:  table(dat$Species, dat$size)
## X-squared = 86.035, df = 2, p-value < 2.2e-16
test$statistic # test statistic
## X-squared 
##  86.03451
test$p.value # p-value
## [1] 2.078944e-19
library(ggplot2)
ggplot(dat) +
  aes(x = Species, fill = size) +
  geom_bar() +
  scale_fill_hue() +
  theme_minimal()

# Mengambil data iris. Namun, karena hanya ada satu variabel kategorikal dan uji Chi-square memerlukan dua variabel kategori. Kita tambahkan kategori ukuran kecil jika panjang kelopak lebih kecil dari median semua bunga, dan lainnya ukuran besar menggunakan fungsi ifelse.

Chi Square test dengan input data manual

paru=matrix(c(109,4,116,34),nrow=2)
paru
##      [,1] [,2]
## [1,]  109  116
## [2,]    4   34
colnames(paru)=c("Kanker Paru","Tidak Kanker Paru ")
rownames(paru)=c("Merokok","Tidak Merokok")
paru
##               Kanker Paru Tidak Kanker Paru 
## Merokok               109                116
## Tidak Merokok           4                 34
prop.table(paru,2)
##               Kanker Paru Tidak Kanker Paru 
## Merokok        0.96460177          0.7733333
## Tidak Merokok  0.03539823          0.2266667
mycol=c("blue", "red")
barplot(prop.table(paru,2),col=mycol,beside=TRUE)
legend("top", rownames(paru), cex = 0.5, fill = mycol)

chisq.test(paru) # Chi-Square test
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  paru
## X-squared = 17.558, df = 1, p-value = 2.786e-05
library(epitools)
orparu<-oddsratio(paru)
orparu
## $data
##               Kanker Paru Tidak Kanker Paru  Total
## Merokok               109                116   225
## Tidak Merokok           4                 34    38
## Total                 113                150   263
## 
## $measure
##                         NA
## odds ratio with 95% C.I. estimate    lower   upper
##            Merokok       1.000000       NA      NA
##            Tidak Merokok 7.683056 2.926094 26.9951
## 
## $p.value
##                NA
## two-sided         midp.exact fisher.exact   chi.square
##   Merokok                 NA           NA           NA
##   Tidak Merokok 4.435022e-06 5.227672e-06 1.257343e-05
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
orp=(109*34)/(116*4) # OR manual
orp
## [1] 7.987069
# Hasil uji menunjukkan bahwa ada hubungan antara penyakit kanker paru dengan status merokok. Untuk menghitung nilai odds rasio secara langsung diperlukan library(epitools) terlebih dahulu. Nilai odds rasionya sebesar 7,6 menunjukkan bahwa pada kelompok yang merokok, peluang terserang kanker paru-paru adalah 7,6 kali peluang tidak terserang kanker paru-paru. 

Fisher’s Exact Test

Apabila tabel kontingensi 2 x 2, salah satu sel memiliki frekuensi harapan atau disebut juga expected count (“Fh”) kurang dari 5 maka digunakan Fisher Exact Test.

Contoh Fisher’s exact test

bayi= rbind(c(4,2),c(1,9) )
bayi
##      [,1] [,2]
## [1,]    4    2
## [2,]    1    9
colnames(bayi)=c("dead","alive")
rownames(bayi)=c("BBLR","Tidak BBLR")
bayi=as.matrix(bayi) 
prop.table(bayi)
##              dead  alive
## BBLR       0.2500 0.1250
## Tidak BBLR 0.0625 0.5625
chisq.test(bayi)
## Warning in chisq.test(bayi): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  bayi
## X-squared = 3.2776, df = 1, p-value = 0.07023
fisher.test(bayi)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  bayi
## p-value = 0.03571
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##    0.8521274 972.4278684
## sample estimates:
## odds ratio 
##   14.00425
# pada uji khai kuadarat terdapat warning karena pada salah satu selnya frekuensi harapannya kurang dari 5. Sehingga digunakan uji fisher's dan diperoleh p-value kurang dari 0,05 (signifikan) serta nilai odds rasionya sebesar 14.