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
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.
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.
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.
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.